e^{-w} \cdot {\ell}^{\left(e^{w}\right)}\begin{array}{l}
\mathbf{if}\;w \leq 1.913020217302641 \cdot 10^{-07}:\\
\;\;\;\;\frac{\log \ell \cdot \left(w \cdot \ell\right) + \left(\ell + \left(0.5 \cdot \left(\ell \cdot \left(w \cdot w\right)\right)\right) \cdot \left(\log \ell + {\log \ell}^{2}\right)\right)}{e^{w}}\\
\mathbf{else}:\\
\;\;\;\;{e}^{\left(\log \ell \cdot e^{w} - w\right)}\\
\end{array}(FPCore (w l) :precision binary64 (* (exp (- w)) (pow l (exp w))))
(FPCore (w l)
:precision binary64
(if (<= w 1.913020217302641e-07)
(/
(+
(* (log l) (* w l))
(+ l (* (* 0.5 (* l (* w w))) (+ (log l) (pow (log l) 2.0)))))
(exp w))
(pow E (- (* (log l) (exp w)) w))))double code(double w, double l) {
return exp(-w) * pow(l, exp(w));
}
double code(double w, double l) {
double tmp;
if (w <= 1.913020217302641e-07) {
tmp = ((log(l) * (w * l)) + (l + ((0.5 * (l * (w * w))) * (log(l) + pow(log(l), 2.0))))) / exp(w);
} else {
tmp = pow(((double) M_E), ((log(l) * exp(w)) - w));
}
return tmp;
}



Bits error versus w



Bits error versus l
Results
if w < 1.9130202173026411e-7Initial program 0.3
Simplified0.3
Taylor expanded around 0 1.3
Simplified0.8
if 1.9130202173026411e-7 < w Initial program 0.3
Simplified0.3
rmApplied add-exp-log_binary640.3
Applied pow-exp_binary640.3
Applied div-exp_binary640.3
rmApplied *-un-lft-identity_binary640.3
Applied exp-prod_binary640.3
Simplified0.3
Final simplification0.7
herbie shell --seed 2020220
(FPCore (w l)
:name "exp-w crasher"
:precision binary64
(* (exp (- w)) (pow l (exp w))))