exp-w (used to crash)

Percentage Accurate: 99.5% → 99.5%
Time: 17.4s
Alternatives: 12
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \end{array} \]
(FPCore (w l) :precision binary64 (* (exp (- w)) (pow l (exp w))))
double code(double w, double l) {
	return exp(-w) * pow(l, exp(w));
}
real(8) function code(w, l)
    real(8), intent (in) :: w
    real(8), intent (in) :: l
    code = exp(-w) * (l ** exp(w))
end function
public static double code(double w, double l) {
	return Math.exp(-w) * Math.pow(l, Math.exp(w));
}
def code(w, l):
	return math.exp(-w) * math.pow(l, math.exp(w))
function code(w, l)
	return Float64(exp(Float64(-w)) * (l ^ exp(w)))
end
function tmp = code(w, l)
	tmp = exp(-w) * (l ^ exp(w));
end
code[w_, l_] := N[(N[Exp[(-w)], $MachinePrecision] * N[Power[l, N[Exp[w], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
e^{-w} \cdot {\ell}^{\left(e^{w}\right)}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

Herbie found 12 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: 99.5% accurate, 1.0× speedup?

\[\begin{array}{l} \\ e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \end{array} \]
(FPCore (w l) :precision binary64 (* (exp (- w)) (pow l (exp w))))
double code(double w, double l) {
	return exp(-w) * pow(l, exp(w));
}
real(8) function code(w, l)
    real(8), intent (in) :: w
    real(8), intent (in) :: l
    code = exp(-w) * (l ** exp(w))
end function
public static double code(double w, double l) {
	return Math.exp(-w) * Math.pow(l, Math.exp(w));
}
def code(w, l):
	return math.exp(-w) * math.pow(l, math.exp(w))
function code(w, l)
	return Float64(exp(Float64(-w)) * (l ^ exp(w)))
end
function tmp = code(w, l)
	tmp = exp(-w) * (l ^ exp(w));
end
code[w_, l_] := N[(N[Exp[(-w)], $MachinePrecision] * N[Power[l, N[Exp[w], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
e^{-w} \cdot {\ell}^{\left(e^{w}\right)}
\end{array}

Alternative 1: 99.5% accurate, 1.0× speedup?

\[\begin{array}{l} \\ e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \end{array} \]
(FPCore (w l) :precision binary64 (* (exp (- w)) (pow l (exp w))))
double code(double w, double l) {
	return exp(-w) * pow(l, exp(w));
}
real(8) function code(w, l)
    real(8), intent (in) :: w
    real(8), intent (in) :: l
    code = exp(-w) * (l ** exp(w))
end function
public static double code(double w, double l) {
	return Math.exp(-w) * Math.pow(l, Math.exp(w));
}
def code(w, l):
	return math.exp(-w) * math.pow(l, math.exp(w))
function code(w, l)
	return Float64(exp(Float64(-w)) * (l ^ exp(w)))
end
function tmp = code(w, l)
	tmp = exp(-w) * (l ^ exp(w));
end
code[w_, l_] := N[(N[Exp[(-w)], $MachinePrecision] * N[Power[l, N[Exp[w], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
e^{-w} \cdot {\ell}^{\left(e^{w}\right)}
\end{array}
Derivation
  1. Initial program 98.7%

    \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
  2. Add Preprocessing
  3. Add Preprocessing

Alternative 2: 97.5% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := e^{-w}\\ \mathbf{if}\;t\_0 \cdot {\ell}^{\left(e^{w}\right)} \leq 2 \cdot 10^{+297}:\\ \;\;\;\;\left(1 - w\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
(FPCore (w l)
 :precision binary64
 (let* ((t_0 (exp (- w))))
   (if (<= (* t_0 (pow l (exp w))) 2e+297)
     (* (- 1.0 w) (pow l (fma (fma 0.5 w 1.0) w 1.0)))
     t_0)))
double code(double w, double l) {
	double t_0 = exp(-w);
	double tmp;
	if ((t_0 * pow(l, exp(w))) <= 2e+297) {
		tmp = (1.0 - w) * pow(l, fma(fma(0.5, w, 1.0), w, 1.0));
	} else {
		tmp = t_0;
	}
	return tmp;
}
function code(w, l)
	t_0 = exp(Float64(-w))
	tmp = 0.0
	if (Float64(t_0 * (l ^ exp(w))) <= 2e+297)
		tmp = Float64(Float64(1.0 - w) * (l ^ fma(fma(0.5, w, 1.0), w, 1.0)));
	else
		tmp = t_0;
	end
	return tmp
end
code[w_, l_] := Block[{t$95$0 = N[Exp[(-w)], $MachinePrecision]}, If[LessEqual[N[(t$95$0 * N[Power[l, N[Exp[w], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2e+297], N[(N[(1.0 - w), $MachinePrecision] * N[Power[l, N[(N[(0.5 * w + 1.0), $MachinePrecision] * w + 1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$0]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := e^{-w}\\
\mathbf{if}\;t\_0 \cdot {\ell}^{\left(e^{w}\right)} \leq 2 \cdot 10^{+297}:\\
\;\;\;\;\left(1 - w\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;t\_0\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 (exp.f64 (neg.f64 w)) (pow.f64 l (exp.f64 w))) < 2e297

    1. Initial program 99.3%

      \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in w around 0

      \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
    4. Step-by-step derivation
      1. Applied rewrites97.4%

        \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
      2. Taylor expanded in w around 0

        \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(1 + w \cdot \left(1 + \frac{1}{2} \cdot w\right)\right)}} \]
      3. Step-by-step derivation
        1. +-commutativeN/A

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

          \[\leadsto 1 \cdot {\ell}^{\left(\color{blue}{\left(1 + \frac{1}{2} \cdot w\right) \cdot w} + 1\right)} \]
        3. lower-fma.f64N/A

          \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(1 + \frac{1}{2} \cdot w, w, 1\right)\right)}} \]
        4. +-commutativeN/A

          \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot w + 1}, w, 1\right)\right)} \]
        5. lower-fma.f6497.3

          \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(0.5, w, 1\right)}, w, 1\right)\right)} \]
      4. Applied rewrites97.3%

        \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}} \]
      5. Taylor expanded in w around 0

        \[\leadsto \color{blue}{\left(1 + -1 \cdot w\right)} \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, 1\right), w, 1\right)\right)} \]
      6. Step-by-step derivation
        1. neg-mul-1N/A

          \[\leadsto \left(1 + \color{blue}{\left(\mathsf{neg}\left(w\right)\right)}\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, 1\right), w, 1\right)\right)} \]
        2. unsub-negN/A

          \[\leadsto \color{blue}{\left(1 - w\right)} \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, 1\right), w, 1\right)\right)} \]
        3. lower--.f6498.6

          \[\leadsto \color{blue}{\left(1 - w\right)} \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)} \]
      7. Applied rewrites98.6%

        \[\leadsto \color{blue}{\left(1 - w\right)} \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)} \]

      if 2e297 < (*.f64 (exp.f64 (neg.f64 w)) (pow.f64 l (exp.f64 w)))

      1. Initial program 97.1%

        \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. lift-pow.f64N/A

          \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
        2. sqr-powN/A

          \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
        3. pow-prod-upN/A

          \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
        4. flip-+N/A

          \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
        5. +-inversesN/A

          \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
        6. metadata-evalN/A

          \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
        7. metadata-evalN/A

          \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
        8. metadata-evalN/A

          \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
        9. +-inversesN/A

          \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
        10. metadata-evalN/A

          \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
        11. flip--N/A

          \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
        12. metadata-evalN/A

          \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
        13. metadata-eval97.2

          \[\leadsto e^{-w} \cdot \color{blue}{1} \]
      4. Applied rewrites97.2%

        \[\leadsto e^{-w} \cdot \color{blue}{1} \]
    5. Recombined 2 regimes into one program.
    6. Final simplification98.2%

      \[\leadsto \begin{array}{l} \mathbf{if}\;e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \leq 2 \cdot 10^{+297}:\\ \;\;\;\;\left(1 - w\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;e^{-w}\\ \end{array} \]
    7. Add Preprocessing

    Alternative 3: 98.5% accurate, 2.3× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;\ell \leq 1:\\ \;\;\;\;1 \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.16666666666666666, w, 0.5\right), w, 1\right), w, 1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\ \end{array} \end{array} \]
    (FPCore (w l)
     :precision binary64
     (if (<= l 1.0)
       (* 1.0 (pow l (fma (fma (fma 0.16666666666666666 w 0.5) w 1.0) w 1.0)))
       (* (fma (fma 0.5 w -1.0) w 1.0) (pow l (fma (fma 0.5 w 1.0) w 1.0)))))
    double code(double w, double l) {
    	double tmp;
    	if (l <= 1.0) {
    		tmp = 1.0 * pow(l, fma(fma(fma(0.16666666666666666, w, 0.5), w, 1.0), w, 1.0));
    	} else {
    		tmp = fma(fma(0.5, w, -1.0), w, 1.0) * pow(l, fma(fma(0.5, w, 1.0), w, 1.0));
    	}
    	return tmp;
    }
    
    function code(w, l)
    	tmp = 0.0
    	if (l <= 1.0)
    		tmp = Float64(1.0 * (l ^ fma(fma(fma(0.16666666666666666, w, 0.5), w, 1.0), w, 1.0)));
    	else
    		tmp = Float64(fma(fma(0.5, w, -1.0), w, 1.0) * (l ^ fma(fma(0.5, w, 1.0), w, 1.0)));
    	end
    	return tmp
    end
    
    code[w_, l_] := If[LessEqual[l, 1.0], N[(1.0 * N[Power[l, N[(N[(N[(0.16666666666666666 * w + 0.5), $MachinePrecision] * w + 1.0), $MachinePrecision] * w + 1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[(N[(0.5 * w + -1.0), $MachinePrecision] * w + 1.0), $MachinePrecision] * N[Power[l, N[(N[(0.5 * w + 1.0), $MachinePrecision] * w + 1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;\ell \leq 1:\\
    \;\;\;\;1 \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.16666666666666666, w, 0.5\right), w, 1\right), w, 1\right)\right)}\\
    
    \mathbf{else}:\\
    \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if l < 1

      1. Initial program 99.5%

        \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
      2. Add Preprocessing
      3. Taylor expanded in w around 0

        \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
      4. Step-by-step derivation
        1. Applied rewrites76.7%

          \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
        2. Taylor expanded in w around 0

          \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(1 + w \cdot \left(1 + w \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot w\right)\right)\right)}} \]
        3. Step-by-step derivation
          1. +-commutativeN/A

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

            \[\leadsto 1 \cdot {\ell}^{\left(\color{blue}{\left(1 + w \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot w\right)\right) \cdot w} + 1\right)} \]
          3. lower-fma.f64N/A

            \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(1 + w \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot w\right), w, 1\right)\right)}} \]
          4. +-commutativeN/A

            \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{w \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot w\right) + 1}, w, 1\right)\right)} \]
          5. *-commutativeN/A

            \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\left(\frac{1}{2} + \frac{1}{6} \cdot w\right) \cdot w} + 1, w, 1\right)\right)} \]
          6. lower-fma.f64N/A

            \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(\frac{1}{2} + \frac{1}{6} \cdot w, w, 1\right)}, w, 1\right)\right)} \]
          7. +-commutativeN/A

            \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\color{blue}{\frac{1}{6} \cdot w + \frac{1}{2}}, w, 1\right), w, 1\right)\right)} \]
          8. lower-fma.f6498.1

            \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(0.16666666666666666, w, 0.5\right)}, w, 1\right), w, 1\right)\right)} \]
        4. Applied rewrites98.1%

          \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.16666666666666666, w, 0.5\right), w, 1\right), w, 1\right)\right)}} \]

        if 1 < l

        1. Initial program 97.7%

          \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
        2. Add Preprocessing
        3. Taylor expanded in w around 0

          \[\leadsto \color{blue}{\left(1 + w \cdot \left(\frac{1}{2} \cdot w - 1\right)\right)} \cdot {\ell}^{\left(e^{w}\right)} \]
        4. Step-by-step derivation
          1. +-commutativeN/A

            \[\leadsto \color{blue}{\left(w \cdot \left(\frac{1}{2} \cdot w - 1\right) + 1\right)} \cdot {\ell}^{\left(e^{w}\right)} \]
          2. *-commutativeN/A

            \[\leadsto \left(\color{blue}{\left(\frac{1}{2} \cdot w - 1\right) \cdot w} + 1\right) \cdot {\ell}^{\left(e^{w}\right)} \]
          3. lower-fma.f64N/A

            \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{2} \cdot w - 1, w, 1\right)} \cdot {\ell}^{\left(e^{w}\right)} \]
          4. sub-negN/A

            \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot w + \left(\mathsf{neg}\left(1\right)\right)}, w, 1\right) \cdot {\ell}^{\left(e^{w}\right)} \]
          5. metadata-evalN/A

            \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot w + \color{blue}{-1}, w, 1\right) \cdot {\ell}^{\left(e^{w}\right)} \]
          6. lower-fma.f6489.4

            \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(0.5, w, -1\right)}, w, 1\right) \cdot {\ell}^{\left(e^{w}\right)} \]
        5. Applied rewrites89.4%

          \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right)} \cdot {\ell}^{\left(e^{w}\right)} \]
        6. Taylor expanded in w around 0

          \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, -1\right), w, 1\right) \cdot {\ell}^{\color{blue}{\left(1 + w \cdot \left(1 + \frac{1}{2} \cdot w\right)\right)}} \]
        7. Step-by-step derivation
          1. +-commutativeN/A

            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, -1\right), w, 1\right) \cdot {\ell}^{\color{blue}{\left(w \cdot \left(1 + \frac{1}{2} \cdot w\right) + 1\right)}} \]
          2. *-commutativeN/A

            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, -1\right), w, 1\right) \cdot {\ell}^{\left(\color{blue}{\left(1 + \frac{1}{2} \cdot w\right) \cdot w} + 1\right)} \]
          3. lower-fma.f64N/A

            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, -1\right), w, 1\right) \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(1 + \frac{1}{2} \cdot w, w, 1\right)\right)}} \]
          4. +-commutativeN/A

            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{2}, w, -1\right), w, 1\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot w + 1}, w, 1\right)\right)} \]
          5. lower-fma.f6499.5

            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right) \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(0.5, w, 1\right)}, w, 1\right)\right)} \]
        8. Applied rewrites99.5%

          \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right) \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}} \]
      5. Recombined 2 regimes into one program.
      6. Add Preprocessing

      Alternative 4: 98.3% accurate, 2.5× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;w \leq -1.3:\\ \;\;\;\;e^{-w}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\ \end{array} \end{array} \]
      (FPCore (w l)
       :precision binary64
       (if (<= w -1.3) (exp (- w)) (* 1.0 (pow l (fma (fma 0.5 w 1.0) w 1.0)))))
      double code(double w, double l) {
      	double tmp;
      	if (w <= -1.3) {
      		tmp = exp(-w);
      	} else {
      		tmp = 1.0 * pow(l, fma(fma(0.5, w, 1.0), w, 1.0));
      	}
      	return tmp;
      }
      
      function code(w, l)
      	tmp = 0.0
      	if (w <= -1.3)
      		tmp = exp(Float64(-w));
      	else
      		tmp = Float64(1.0 * (l ^ fma(fma(0.5, w, 1.0), w, 1.0)));
      	end
      	return tmp
      end
      
      code[w_, l_] := If[LessEqual[w, -1.3], N[Exp[(-w)], $MachinePrecision], N[(1.0 * N[Power[l, N[(N[(0.5 * w + 1.0), $MachinePrecision] * w + 1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      \mathbf{if}\;w \leq -1.3:\\
      \;\;\;\;e^{-w}\\
      
      \mathbf{else}:\\
      \;\;\;\;1 \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if w < -1.30000000000000004

        1. Initial program 100.0%

          \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
        2. Add Preprocessing
        3. Step-by-step derivation
          1. lift-pow.f64N/A

            \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
          2. sqr-powN/A

            \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
          3. pow-prod-upN/A

            \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
          4. flip-+N/A

            \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
          5. +-inversesN/A

            \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
          6. metadata-evalN/A

            \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
          7. metadata-evalN/A

            \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
          8. metadata-evalN/A

            \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
          9. +-inversesN/A

            \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
          10. metadata-evalN/A

            \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
          11. flip--N/A

            \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
          12. metadata-evalN/A

            \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
          13. metadata-eval100.0

            \[\leadsto e^{-w} \cdot \color{blue}{1} \]
        4. Applied rewrites100.0%

          \[\leadsto e^{-w} \cdot \color{blue}{1} \]

        if -1.30000000000000004 < w

        1. Initial program 98.3%

          \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
        2. Add Preprocessing
        3. Taylor expanded in w around 0

          \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
        4. Step-by-step derivation
          1. Applied rewrites97.4%

            \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
          2. Taylor expanded in w around 0

            \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(1 + w \cdot \left(1 + \frac{1}{2} \cdot w\right)\right)}} \]
          3. Step-by-step derivation
            1. +-commutativeN/A

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

              \[\leadsto 1 \cdot {\ell}^{\left(\color{blue}{\left(1 + \frac{1}{2} \cdot w\right) \cdot w} + 1\right)} \]
            3. lower-fma.f64N/A

              \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(1 + \frac{1}{2} \cdot w, w, 1\right)\right)}} \]
            4. +-commutativeN/A

              \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot w + 1}, w, 1\right)\right)} \]
            5. lower-fma.f6497.4

              \[\leadsto 1 \cdot {\ell}^{\left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(0.5, w, 1\right)}, w, 1\right)\right)} \]
          4. Applied rewrites97.4%

            \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}} \]
        5. Recombined 2 regimes into one program.
        6. Final simplification98.1%

          \[\leadsto \begin{array}{l} \mathbf{if}\;w \leq -1.3:\\ \;\;\;\;e^{-w}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot {\ell}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, 1\right), w, 1\right)\right)}\\ \end{array} \]
        7. Add Preprocessing

        Alternative 5: 97.4% accurate, 2.7× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;w \leq -4.4 \cdot 10^{+16}:\\ \;\;\;\;e^{-w}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot {\ell}^{\left(1 + w\right)}\\ \end{array} \end{array} \]
        (FPCore (w l)
         :precision binary64
         (if (<= w -4.4e+16) (exp (- w)) (* 1.0 (pow l (+ 1.0 w)))))
        double code(double w, double l) {
        	double tmp;
        	if (w <= -4.4e+16) {
        		tmp = exp(-w);
        	} else {
        		tmp = 1.0 * pow(l, (1.0 + w));
        	}
        	return tmp;
        }
        
        real(8) function code(w, l)
            real(8), intent (in) :: w
            real(8), intent (in) :: l
            real(8) :: tmp
            if (w <= (-4.4d+16)) then
                tmp = exp(-w)
            else
                tmp = 1.0d0 * (l ** (1.0d0 + w))
            end if
            code = tmp
        end function
        
        public static double code(double w, double l) {
        	double tmp;
        	if (w <= -4.4e+16) {
        		tmp = Math.exp(-w);
        	} else {
        		tmp = 1.0 * Math.pow(l, (1.0 + w));
        	}
        	return tmp;
        }
        
        def code(w, l):
        	tmp = 0
        	if w <= -4.4e+16:
        		tmp = math.exp(-w)
        	else:
        		tmp = 1.0 * math.pow(l, (1.0 + w))
        	return tmp
        
        function code(w, l)
        	tmp = 0.0
        	if (w <= -4.4e+16)
        		tmp = exp(Float64(-w));
        	else
        		tmp = Float64(1.0 * (l ^ Float64(1.0 + w)));
        	end
        	return tmp
        end
        
        function tmp_2 = code(w, l)
        	tmp = 0.0;
        	if (w <= -4.4e+16)
        		tmp = exp(-w);
        	else
        		tmp = 1.0 * (l ^ (1.0 + w));
        	end
        	tmp_2 = tmp;
        end
        
        code[w_, l_] := If[LessEqual[w, -4.4e+16], N[Exp[(-w)], $MachinePrecision], N[(1.0 * N[Power[l, N[(1.0 + w), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        \mathbf{if}\;w \leq -4.4 \cdot 10^{+16}:\\
        \;\;\;\;e^{-w}\\
        
        \mathbf{else}:\\
        \;\;\;\;1 \cdot {\ell}^{\left(1 + w\right)}\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if w < -4.4e16

          1. Initial program 100.0%

            \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. lift-pow.f64N/A

              \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
            2. sqr-powN/A

              \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
            3. pow-prod-upN/A

              \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
            4. flip-+N/A

              \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
            5. +-inversesN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            6. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            7. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            8. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            9. +-inversesN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
            10. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
            11. flip--N/A

              \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
            12. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
            13. metadata-eval100.0

              \[\leadsto e^{-w} \cdot \color{blue}{1} \]
          4. Applied rewrites100.0%

            \[\leadsto e^{-w} \cdot \color{blue}{1} \]

          if -4.4e16 < w

          1. Initial program 98.3%

            \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
          2. Add Preprocessing
          3. Taylor expanded in w around 0

            \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
          4. Step-by-step derivation
            1. Applied rewrites96.4%

              \[\leadsto \color{blue}{1} \cdot {\ell}^{\left(e^{w}\right)} \]
            2. Taylor expanded in w around 0

              \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(1 + w\right)}} \]
            3. Step-by-step derivation
              1. lower-+.f6497.4

                \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(1 + w\right)}} \]
            4. Applied rewrites97.4%

              \[\leadsto 1 \cdot {\ell}^{\color{blue}{\left(1 + w\right)}} \]
          5. Recombined 2 regimes into one program.
          6. Final simplification98.0%

            \[\leadsto \begin{array}{l} \mathbf{if}\;w \leq -4.4 \cdot 10^{+16}:\\ \;\;\;\;e^{-w}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot {\ell}^{\left(1 + w\right)}\\ \end{array} \]
          7. Add Preprocessing

          Alternative 6: 45.3% accurate, 3.0× speedup?

          \[\begin{array}{l} \\ e^{-w} \end{array} \]
          (FPCore (w l) :precision binary64 (exp (- w)))
          double code(double w, double l) {
          	return exp(-w);
          }
          
          real(8) function code(w, l)
              real(8), intent (in) :: w
              real(8), intent (in) :: l
              code = exp(-w)
          end function
          
          public static double code(double w, double l) {
          	return Math.exp(-w);
          }
          
          def code(w, l):
          	return math.exp(-w)
          
          function code(w, l)
          	return exp(Float64(-w))
          end
          
          function tmp = code(w, l)
          	tmp = exp(-w);
          end
          
          code[w_, l_] := N[Exp[(-w)], $MachinePrecision]
          
          \begin{array}{l}
          
          \\
          e^{-w}
          \end{array}
          
          Derivation
          1. Initial program 98.7%

            \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. lift-pow.f64N/A

              \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
            2. sqr-powN/A

              \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
            3. pow-prod-upN/A

              \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
            4. flip-+N/A

              \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
            5. +-inversesN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            6. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            7. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            8. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
            9. +-inversesN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
            10. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
            11. flip--N/A

              \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
            12. metadata-evalN/A

              \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
            13. metadata-eval46.3

              \[\leadsto e^{-w} \cdot \color{blue}{1} \]
          4. Applied rewrites46.3%

            \[\leadsto e^{-w} \cdot \color{blue}{1} \]
          5. Final simplification46.3%

            \[\leadsto e^{-w} \]
          6. Add Preprocessing

          Alternative 7: 26.1% accurate, 3.2× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;w \leq -5.5 \cdot 10^{+102}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\left(w \cdot w - 1\right) \cdot \left(1 - w\right) - \left(w - 1\right) \cdot \left(\left(1 - w \cdot w\right) \cdot \left(w \cdot w\right)\right)}{\left(w - 1\right) \cdot \left(1 - w\right)}}{\left(1 + w\right) \cdot \left(1 + w\right)}\\ \end{array} \end{array} \]
          (FPCore (w l)
           :precision binary64
           (if (<= w -5.5e+102)
             (fma (fma (fma -0.16666666666666666 w 0.5) w -1.0) w 1.0)
             (/
              (/
               (-
                (* (- (* w w) 1.0) (- 1.0 w))
                (* (- w 1.0) (* (- 1.0 (* w w)) (* w w))))
               (* (- w 1.0) (- 1.0 w)))
              (* (+ 1.0 w) (+ 1.0 w)))))
          double code(double w, double l) {
          	double tmp;
          	if (w <= -5.5e+102) {
          		tmp = fma(fma(fma(-0.16666666666666666, w, 0.5), w, -1.0), w, 1.0);
          	} else {
          		tmp = (((((w * w) - 1.0) * (1.0 - w)) - ((w - 1.0) * ((1.0 - (w * w)) * (w * w)))) / ((w - 1.0) * (1.0 - w))) / ((1.0 + w) * (1.0 + w));
          	}
          	return tmp;
          }
          
          function code(w, l)
          	tmp = 0.0
          	if (w <= -5.5e+102)
          		tmp = fma(fma(fma(-0.16666666666666666, w, 0.5), w, -1.0), w, 1.0);
          	else
          		tmp = Float64(Float64(Float64(Float64(Float64(Float64(w * w) - 1.0) * Float64(1.0 - w)) - Float64(Float64(w - 1.0) * Float64(Float64(1.0 - Float64(w * w)) * Float64(w * w)))) / Float64(Float64(w - 1.0) * Float64(1.0 - w))) / Float64(Float64(1.0 + w) * Float64(1.0 + w)));
          	end
          	return tmp
          end
          
          code[w_, l_] := If[LessEqual[w, -5.5e+102], N[(N[(N[(-0.16666666666666666 * w + 0.5), $MachinePrecision] * w + -1.0), $MachinePrecision] * w + 1.0), $MachinePrecision], N[(N[(N[(N[(N[(N[(w * w), $MachinePrecision] - 1.0), $MachinePrecision] * N[(1.0 - w), $MachinePrecision]), $MachinePrecision] - N[(N[(w - 1.0), $MachinePrecision] * N[(N[(1.0 - N[(w * w), $MachinePrecision]), $MachinePrecision] * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(w - 1.0), $MachinePrecision] * N[(1.0 - w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + w), $MachinePrecision] * N[(1.0 + w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;w \leq -5.5 \cdot 10^{+102}:\\
          \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\frac{\frac{\left(w \cdot w - 1\right) \cdot \left(1 - w\right) - \left(w - 1\right) \cdot \left(\left(1 - w \cdot w\right) \cdot \left(w \cdot w\right)\right)}{\left(w - 1\right) \cdot \left(1 - w\right)}}{\left(1 + w\right) \cdot \left(1 + w\right)}\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if w < -5.49999999999999981e102

            1. Initial program 100.0%

              \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. lift-pow.f64N/A

                \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
              2. sqr-powN/A

                \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
              3. pow-prod-upN/A

                \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
              4. flip-+N/A

                \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
              5. +-inversesN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              6. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              7. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              8. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              9. +-inversesN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
              10. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
              11. flip--N/A

                \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
              12. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
              13. metadata-eval100.0

                \[\leadsto e^{-w} \cdot \color{blue}{1} \]
            4. Applied rewrites100.0%

              \[\leadsto e^{-w} \cdot \color{blue}{1} \]
            5. Taylor expanded in w around 0

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

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

                \[\leadsto \left(\color{blue}{\left(w \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot w\right) - 1\right) \cdot w} + 1\right) \cdot 1 \]
              3. lower-fma.f64N/A

                \[\leadsto \color{blue}{\mathsf{fma}\left(w \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot w\right) - 1, w, 1\right)} \cdot 1 \]
              4. sub-negN/A

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

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

                \[\leadsto \mathsf{fma}\left(\left(\frac{1}{2} + \frac{-1}{6} \cdot w\right) \cdot w + \color{blue}{-1}, w, 1\right) \cdot 1 \]
              7. lower-fma.f64N/A

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

                \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\color{blue}{\frac{-1}{6} \cdot w + \frac{1}{2}}, w, -1\right), w, 1\right) \cdot 1 \]
              9. lower-fma.f6498.5

                \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right)}, w, -1\right), w, 1\right) \cdot 1 \]
            7. Applied rewrites98.5%

              \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right)} \cdot 1 \]

            if -5.49999999999999981e102 < w

            1. Initial program 98.4%

              \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. lift-pow.f64N/A

                \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
              2. sqr-powN/A

                \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
              3. pow-prod-upN/A

                \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
              4. flip-+N/A

                \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
              5. +-inversesN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              6. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              7. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              8. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
              9. +-inversesN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
              10. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
              11. flip--N/A

                \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
              12. metadata-evalN/A

                \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
              13. metadata-eval32.6

                \[\leadsto e^{-w} \cdot \color{blue}{1} \]
            4. Applied rewrites32.6%

              \[\leadsto e^{-w} \cdot \color{blue}{1} \]
            5. Taylor expanded in w around 0

              \[\leadsto \color{blue}{\left(1 + -1 \cdot w\right)} \cdot 1 \]
            6. Step-by-step derivation
              1. neg-mul-1N/A

                \[\leadsto \left(1 + \color{blue}{\left(\mathsf{neg}\left(w\right)\right)}\right) \cdot 1 \]
              2. unsub-negN/A

                \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
              3. lower--.f644.4

                \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
            7. Applied rewrites4.4%

              \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
            8. Step-by-step derivation
              1. Applied rewrites4.2%

                \[\leadsto \frac{1 \cdot \left(1 + w\right) - \left(1 + w\right) \cdot \left(w \cdot w\right)}{\color{blue}{\left(1 + w\right) \cdot \left(1 + w\right)}} \cdot 1 \]
              2. Step-by-step derivation
                1. Applied rewrites7.9%

                  \[\leadsto \frac{\frac{\left(w \cdot w - 1\right) \cdot \left(1 - w\right) - \left(w - 1\right) \cdot \left(\left(1 - w \cdot w\right) \cdot \left(w \cdot w\right)\right)}{\left(w - 1\right) \cdot \left(1 - w\right)}}{\color{blue}{\left(1 + w\right)} \cdot \left(1 + w\right)} \cdot 1 \]
              3. Recombined 2 regimes into one program.
              4. Final simplification26.3%

                \[\leadsto \begin{array}{l} \mathbf{if}\;w \leq -5.5 \cdot 10^{+102}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\left(w \cdot w - 1\right) \cdot \left(1 - w\right) - \left(w - 1\right) \cdot \left(\left(1 - w \cdot w\right) \cdot \left(w \cdot w\right)\right)}{\left(w - 1\right) \cdot \left(1 - w\right)}}{\left(1 + w\right) \cdot \left(1 + w\right)}\\ \end{array} \]
              5. Add Preprocessing

              Alternative 8: 24.8% accurate, 4.3× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} t_0 := 1 - w \cdot w\\ \mathbf{if}\;w \leq -1.35 \cdot 10^{+154}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{t\_0 - t\_0 \cdot \left(w \cdot w\right)}{1 - w}}{\left(1 + w\right) \cdot \left(1 + w\right)}\\ \end{array} \end{array} \]
              (FPCore (w l)
               :precision binary64
               (let* ((t_0 (- 1.0 (* w w))))
                 (if (<= w -1.35e+154)
                   (fma (fma 0.5 w -1.0) w 1.0)
                   (/ (/ (- t_0 (* t_0 (* w w))) (- 1.0 w)) (* (+ 1.0 w) (+ 1.0 w))))))
              double code(double w, double l) {
              	double t_0 = 1.0 - (w * w);
              	double tmp;
              	if (w <= -1.35e+154) {
              		tmp = fma(fma(0.5, w, -1.0), w, 1.0);
              	} else {
              		tmp = ((t_0 - (t_0 * (w * w))) / (1.0 - w)) / ((1.0 + w) * (1.0 + w));
              	}
              	return tmp;
              }
              
              function code(w, l)
              	t_0 = Float64(1.0 - Float64(w * w))
              	tmp = 0.0
              	if (w <= -1.35e+154)
              		tmp = fma(fma(0.5, w, -1.0), w, 1.0);
              	else
              		tmp = Float64(Float64(Float64(t_0 - Float64(t_0 * Float64(w * w))) / Float64(1.0 - w)) / Float64(Float64(1.0 + w) * Float64(1.0 + w)));
              	end
              	return tmp
              end
              
              code[w_, l_] := Block[{t$95$0 = N[(1.0 - N[(w * w), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[w, -1.35e+154], N[(N[(0.5 * w + -1.0), $MachinePrecision] * w + 1.0), $MachinePrecision], N[(N[(N[(t$95$0 - N[(t$95$0 * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - w), $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + w), $MachinePrecision] * N[(1.0 + w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              t_0 := 1 - w \cdot w\\
              \mathbf{if}\;w \leq -1.35 \cdot 10^{+154}:\\
              \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right)\\
              
              \mathbf{else}:\\
              \;\;\;\;\frac{\frac{t\_0 - t\_0 \cdot \left(w \cdot w\right)}{1 - w}}{\left(1 + w\right) \cdot \left(1 + w\right)}\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if w < -1.35000000000000003e154

                1. Initial program 100.0%

                  \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
                2. Add Preprocessing
                3. Step-by-step derivation
                  1. lift-pow.f64N/A

                    \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
                  2. sqr-powN/A

                    \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
                  3. pow-prod-upN/A

                    \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
                  4. flip-+N/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
                  5. +-inversesN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  6. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  7. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  8. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  9. +-inversesN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
                  10. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
                  11. flip--N/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
                  12. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
                  13. metadata-eval100.0

                    \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                4. Applied rewrites100.0%

                  \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                5. Taylor expanded in w around 0

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

                    \[\leadsto \color{blue}{\left(w \cdot \left(\frac{1}{2} \cdot w - 1\right) + 1\right)} \cdot 1 \]
                  2. *-commutativeN/A

                    \[\leadsto \left(\color{blue}{\left(\frac{1}{2} \cdot w - 1\right) \cdot w} + 1\right) \cdot 1 \]
                  3. lower-fma.f64N/A

                    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{2} \cdot w - 1, w, 1\right)} \cdot 1 \]
                  4. sub-negN/A

                    \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot w + \left(\mathsf{neg}\left(1\right)\right)}, w, 1\right) \cdot 1 \]
                  5. metadata-evalN/A

                    \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot w + \color{blue}{-1}, w, 1\right) \cdot 1 \]
                  6. lower-fma.f64100.0

                    \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(0.5, w, -1\right)}, w, 1\right) \cdot 1 \]
                7. Applied rewrites100.0%

                  \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right)} \cdot 1 \]

                if -1.35000000000000003e154 < w

                1. Initial program 98.5%

                  \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
                2. Add Preprocessing
                3. Step-by-step derivation
                  1. lift-pow.f64N/A

                    \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
                  2. sqr-powN/A

                    \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
                  3. pow-prod-upN/A

                    \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
                  4. flip-+N/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
                  5. +-inversesN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  6. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  7. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  8. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                  9. +-inversesN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
                  10. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
                  11. flip--N/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
                  12. metadata-evalN/A

                    \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
                  13. metadata-eval36.4

                    \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                4. Applied rewrites36.4%

                  \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                5. Taylor expanded in w around 0

                  \[\leadsto \color{blue}{\left(1 + -1 \cdot w\right)} \cdot 1 \]
                6. Step-by-step derivation
                  1. neg-mul-1N/A

                    \[\leadsto \left(1 + \color{blue}{\left(\mathsf{neg}\left(w\right)\right)}\right) \cdot 1 \]
                  2. unsub-negN/A

                    \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                  3. lower--.f644.4

                    \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                7. Applied rewrites4.4%

                  \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                8. Step-by-step derivation
                  1. Applied rewrites9.5%

                    \[\leadsto \frac{1 \cdot \left(1 + w\right) - \left(1 + w\right) \cdot \left(w \cdot w\right)}{\color{blue}{\left(1 + w\right) \cdot \left(1 + w\right)}} \cdot 1 \]
                  2. Step-by-step derivation
                    1. Applied rewrites11.3%

                      \[\leadsto \frac{\frac{\left(1 - w \cdot w\right) - \left(1 - w \cdot w\right) \cdot \left(w \cdot w\right)}{1 - w}}{\color{blue}{\left(1 + w\right)} \cdot \left(1 + w\right)} \cdot 1 \]
                  3. Recombined 2 regimes into one program.
                  4. Final simplification25.1%

                    \[\leadsto \begin{array}{l} \mathbf{if}\;w \leq -1.35 \cdot 10^{+154}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\left(1 - w \cdot w\right) - \left(1 - w \cdot w\right) \cdot \left(w \cdot w\right)}{1 - w}}{\left(1 + w\right) \cdot \left(1 + w\right)}\\ \end{array} \]
                  5. Add Preprocessing

                  Alternative 9: 22.6% accurate, 16.3× speedup?

                  \[\begin{array}{l} \\ \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right) \end{array} \]
                  (FPCore (w l)
                   :precision binary64
                   (fma (fma (fma -0.16666666666666666 w 0.5) w -1.0) w 1.0))
                  double code(double w, double l) {
                  	return fma(fma(fma(-0.16666666666666666, w, 0.5), w, -1.0), w, 1.0);
                  }
                  
                  function code(w, l)
                  	return fma(fma(fma(-0.16666666666666666, w, 0.5), w, -1.0), w, 1.0)
                  end
                  
                  code[w_, l_] := N[(N[(N[(-0.16666666666666666 * w + 0.5), $MachinePrecision] * w + -1.0), $MachinePrecision] * w + 1.0), $MachinePrecision]
                  
                  \begin{array}{l}
                  
                  \\
                  \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right)
                  \end{array}
                  
                  Derivation
                  1. Initial program 98.7%

                    \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
                  2. Add Preprocessing
                  3. Step-by-step derivation
                    1. lift-pow.f64N/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
                    2. sqr-powN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
                    3. pow-prod-upN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
                    4. flip-+N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
                    5. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    6. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    7. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    8. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    9. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
                    10. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
                    11. flip--N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
                    12. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
                    13. metadata-eval46.3

                      \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  4. Applied rewrites46.3%

                    \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  5. Taylor expanded in w around 0

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

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

                      \[\leadsto \left(\color{blue}{\left(w \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot w\right) - 1\right) \cdot w} + 1\right) \cdot 1 \]
                    3. lower-fma.f64N/A

                      \[\leadsto \color{blue}{\mathsf{fma}\left(w \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot w\right) - 1, w, 1\right)} \cdot 1 \]
                    4. sub-negN/A

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

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

                      \[\leadsto \mathsf{fma}\left(\left(\frac{1}{2} + \frac{-1}{6} \cdot w\right) \cdot w + \color{blue}{-1}, w, 1\right) \cdot 1 \]
                    7. lower-fma.f64N/A

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

                      \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\color{blue}{\frac{-1}{6} \cdot w + \frac{1}{2}}, w, -1\right), w, 1\right) \cdot 1 \]
                    9. lower-fma.f6423.6

                      \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right)}, w, -1\right), w, 1\right) \cdot 1 \]
                  7. Applied rewrites23.6%

                    \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right)} \cdot 1 \]
                  8. Final simplification23.6%

                    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.16666666666666666, w, 0.5\right), w, -1\right), w, 1\right) \]
                  9. Add Preprocessing

                  Alternative 10: 18.0% accurate, 23.8× speedup?

                  \[\begin{array}{l} \\ \mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right) \end{array} \]
                  (FPCore (w l) :precision binary64 (fma (fma 0.5 w -1.0) w 1.0))
                  double code(double w, double l) {
                  	return fma(fma(0.5, w, -1.0), w, 1.0);
                  }
                  
                  function code(w, l)
                  	return fma(fma(0.5, w, -1.0), w, 1.0)
                  end
                  
                  code[w_, l_] := N[(N[(0.5 * w + -1.0), $MachinePrecision] * w + 1.0), $MachinePrecision]
                  
                  \begin{array}{l}
                  
                  \\
                  \mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right)
                  \end{array}
                  
                  Derivation
                  1. Initial program 98.7%

                    \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
                  2. Add Preprocessing
                  3. Step-by-step derivation
                    1. lift-pow.f64N/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
                    2. sqr-powN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
                    3. pow-prod-upN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
                    4. flip-+N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
                    5. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    6. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    7. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    8. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    9. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
                    10. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
                    11. flip--N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
                    12. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
                    13. metadata-eval46.3

                      \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  4. Applied rewrites46.3%

                    \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  5. Taylor expanded in w around 0

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

                      \[\leadsto \color{blue}{\left(w \cdot \left(\frac{1}{2} \cdot w - 1\right) + 1\right)} \cdot 1 \]
                    2. *-commutativeN/A

                      \[\leadsto \left(\color{blue}{\left(\frac{1}{2} \cdot w - 1\right) \cdot w} + 1\right) \cdot 1 \]
                    3. lower-fma.f64N/A

                      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{2} \cdot w - 1, w, 1\right)} \cdot 1 \]
                    4. sub-negN/A

                      \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot w + \left(\mathsf{neg}\left(1\right)\right)}, w, 1\right) \cdot 1 \]
                    5. metadata-evalN/A

                      \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot w + \color{blue}{-1}, w, 1\right) \cdot 1 \]
                    6. lower-fma.f6419.5

                      \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(0.5, w, -1\right)}, w, 1\right) \cdot 1 \]
                  7. Applied rewrites19.5%

                    \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right)} \cdot 1 \]
                  8. Final simplification19.5%

                    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(0.5, w, -1\right), w, 1\right) \]
                  9. Add Preprocessing

                  Alternative 11: 4.9% accurate, 77.3× speedup?

                  \[\begin{array}{l} \\ 1 - w \end{array} \]
                  (FPCore (w l) :precision binary64 (- 1.0 w))
                  double code(double w, double l) {
                  	return 1.0 - w;
                  }
                  
                  real(8) function code(w, l)
                      real(8), intent (in) :: w
                      real(8), intent (in) :: l
                      code = 1.0d0 - w
                  end function
                  
                  public static double code(double w, double l) {
                  	return 1.0 - w;
                  }
                  
                  def code(w, l):
                  	return 1.0 - w
                  
                  function code(w, l)
                  	return Float64(1.0 - w)
                  end
                  
                  function tmp = code(w, l)
                  	tmp = 1.0 - w;
                  end
                  
                  code[w_, l_] := N[(1.0 - w), $MachinePrecision]
                  
                  \begin{array}{l}
                  
                  \\
                  1 - w
                  \end{array}
                  
                  Derivation
                  1. Initial program 98.7%

                    \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
                  2. Add Preprocessing
                  3. Step-by-step derivation
                    1. lift-pow.f64N/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
                    2. sqr-powN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
                    3. pow-prod-upN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
                    4. flip-+N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
                    5. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    6. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    7. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    8. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    9. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
                    10. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
                    11. flip--N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
                    12. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
                    13. metadata-eval46.3

                      \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  4. Applied rewrites46.3%

                    \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  5. Taylor expanded in w around 0

                    \[\leadsto \color{blue}{\left(1 + -1 \cdot w\right)} \cdot 1 \]
                  6. Step-by-step derivation
                    1. neg-mul-1N/A

                      \[\leadsto \left(1 + \color{blue}{\left(\mathsf{neg}\left(w\right)\right)}\right) \cdot 1 \]
                    2. unsub-negN/A

                      \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                    3. lower--.f644.8

                      \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                  7. Applied rewrites4.8%

                    \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                  8. Final simplification4.8%

                    \[\leadsto 1 - w \]
                  9. Add Preprocessing

                  Alternative 12: 4.0% accurate, 103.0× speedup?

                  \[\begin{array}{l} \\ -w \end{array} \]
                  (FPCore (w l) :precision binary64 (- w))
                  double code(double w, double l) {
                  	return -w;
                  }
                  
                  real(8) function code(w, l)
                      real(8), intent (in) :: w
                      real(8), intent (in) :: l
                      code = -w
                  end function
                  
                  public static double code(double w, double l) {
                  	return -w;
                  }
                  
                  def code(w, l):
                  	return -w
                  
                  function code(w, l)
                  	return Float64(-w)
                  end
                  
                  function tmp = code(w, l)
                  	tmp = -w;
                  end
                  
                  code[w_, l_] := (-w)
                  
                  \begin{array}{l}
                  
                  \\
                  -w
                  \end{array}
                  
                  Derivation
                  1. Initial program 98.7%

                    \[e^{-w} \cdot {\ell}^{\left(e^{w}\right)} \]
                  2. Add Preprocessing
                  3. Step-by-step derivation
                    1. lift-pow.f64N/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(e^{w}\right)}} \]
                    2. sqr-powN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{\left({\ell}^{\left(\frac{e^{w}}{2}\right)} \cdot {\ell}^{\left(\frac{e^{w}}{2}\right)}\right)} \]
                    3. pow-prod-upN/A

                      \[\leadsto e^{-w} \cdot \color{blue}{{\ell}^{\left(\frac{e^{w}}{2} + \frac{e^{w}}{2}\right)}} \]
                    4. flip-+N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(\frac{\frac{e^{w}}{2} \cdot \frac{e^{w}}{2} - \frac{e^{w}}{2} \cdot \frac{e^{w}}{2}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)}} \]
                    5. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    6. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 - 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    7. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{\color{blue}{0 \cdot 0} - 0}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    8. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - \color{blue}{0 \cdot 0}}{\frac{e^{w}}{2} - \frac{e^{w}}{2}}\right)} \]
                    9. +-inversesN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0}}\right)} \]
                    10. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\left(\frac{0 \cdot 0 - 0 \cdot 0}{\color{blue}{0 + 0}}\right)} \]
                    11. flip--N/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{\left(0 - 0\right)}} \]
                    12. metadata-evalN/A

                      \[\leadsto e^{-w} \cdot {\ell}^{\color{blue}{0}} \]
                    13. metadata-eval46.3

                      \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  4. Applied rewrites46.3%

                    \[\leadsto e^{-w} \cdot \color{blue}{1} \]
                  5. Taylor expanded in w around 0

                    \[\leadsto \color{blue}{\left(1 + -1 \cdot w\right)} \cdot 1 \]
                  6. Step-by-step derivation
                    1. neg-mul-1N/A

                      \[\leadsto \left(1 + \color{blue}{\left(\mathsf{neg}\left(w\right)\right)}\right) \cdot 1 \]
                    2. unsub-negN/A

                      \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                    3. lower--.f644.8

                      \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                  7. Applied rewrites4.8%

                    \[\leadsto \color{blue}{\left(1 - w\right)} \cdot 1 \]
                  8. Taylor expanded in w around inf

                    \[\leadsto \left(-1 \cdot \color{blue}{w}\right) \cdot 1 \]
                  9. Step-by-step derivation
                    1. Applied rewrites3.9%

                      \[\leadsto \left(-w\right) \cdot 1 \]
                    2. Step-by-step derivation
                      1. lift-*.f64N/A

                        \[\leadsto \color{blue}{\left(-w\right) \cdot 1} \]
                      2. *-rgt-identity3.9

                        \[\leadsto \color{blue}{-w} \]
                    3. Applied rewrites3.9%

                      \[\leadsto \color{blue}{-w} \]
                    4. Add Preprocessing

                    Reproduce

                    ?
                    herbie shell --seed 2024307 
                    (FPCore (w l)
                      :name "exp-w (used to crash)"
                      :precision binary64
                      (* (exp (- w)) (pow l (exp w))))