x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{a} = -\infty:\\
\;\;\;\;x + y \cdot \frac{z - t}{a}\\
\mathbf{elif}\;\frac{y \cdot \left(z - t\right)}{a} \le 5.01104939008295895 \cdot 10^{291}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r387819 = x;
double r387820 = y;
double r387821 = z;
double r387822 = t;
double r387823 = r387821 - r387822;
double r387824 = r387820 * r387823;
double r387825 = a;
double r387826 = r387824 / r387825;
double r387827 = r387819 + r387826;
return r387827;
}
double f(double x, double y, double z, double t, double a) {
double r387828 = y;
double r387829 = z;
double r387830 = t;
double r387831 = r387829 - r387830;
double r387832 = r387828 * r387831;
double r387833 = a;
double r387834 = r387832 / r387833;
double r387835 = -inf.0;
bool r387836 = r387834 <= r387835;
double r387837 = x;
double r387838 = r387831 / r387833;
double r387839 = r387828 * r387838;
double r387840 = r387837 + r387839;
double r387841 = 5.011049390082959e+291;
bool r387842 = r387834 <= r387841;
double r387843 = r387837 + r387834;
double r387844 = r387833 / r387831;
double r387845 = r387828 / r387844;
double r387846 = r387837 + r387845;
double r387847 = r387842 ? r387843 : r387846;
double r387848 = r387836 ? r387840 : r387847;
return r387848;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.2 |
|---|---|
| Target | 0.6 |
| Herbie | 0.6 |
if (/ (* y (- z t)) a) < -inf.0Initial program 64.0
rmApplied *-un-lft-identity64.0
Applied times-frac0.2
Simplified0.2
if -inf.0 < (/ (* y (- z t)) a) < 5.011049390082959e+291Initial program 0.4
if 5.011049390082959e+291 < (/ (* y (- z t)) a) Initial program 54.0
rmApplied associate-/l*4.3
Final simplification0.6
herbie shell --seed 2020021
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:precision binary64
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))