x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\left(z - t\right) \cdot y = -\infty:\\
\;\;\;\;x + \frac{z - t}{a} \cdot y\\
\mathbf{elif}\;\left(z - t\right) \cdot y \le 4.602775554656434635046377876682959240373 \cdot 10^{138}:\\
\;\;\;\;\frac{\left(z - t\right) \cdot y}{a} + x\\
\mathbf{else}:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r21815675 = x;
double r21815676 = y;
double r21815677 = z;
double r21815678 = t;
double r21815679 = r21815677 - r21815678;
double r21815680 = r21815676 * r21815679;
double r21815681 = a;
double r21815682 = r21815680 / r21815681;
double r21815683 = r21815675 + r21815682;
return r21815683;
}
double f(double x, double y, double z, double t, double a) {
double r21815684 = z;
double r21815685 = t;
double r21815686 = r21815684 - r21815685;
double r21815687 = y;
double r21815688 = r21815686 * r21815687;
double r21815689 = -inf.0;
bool r21815690 = r21815688 <= r21815689;
double r21815691 = x;
double r21815692 = a;
double r21815693 = r21815686 / r21815692;
double r21815694 = r21815693 * r21815687;
double r21815695 = r21815691 + r21815694;
double r21815696 = 4.6027755546564346e+138;
bool r21815697 = r21815688 <= r21815696;
double r21815698 = r21815688 / r21815692;
double r21815699 = r21815698 + r21815691;
double r21815700 = r21815687 / r21815692;
double r21815701 = r21815686 * r21815700;
double r21815702 = r21815701 + r21815691;
double r21815703 = r21815697 ? r21815699 : r21815702;
double r21815704 = r21815690 ? r21815695 : r21815703;
return r21815704;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
if (* y (- z t)) < -inf.0Initial program 64.0
rmApplied *-un-lft-identity64.0
Applied times-frac0.2
Simplified0.2
if -inf.0 < (* y (- z t)) < 4.6027755546564346e+138Initial program 0.4
if 4.6027755546564346e+138 < (* y (- z t)) Initial program 20.5
rmApplied associate-/l*2.0
rmApplied associate-/r/1.3
Final simplification0.5
herbie shell --seed 2019171
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))