x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -2984.114765121556956728454679250717163086:\\
\;\;\;\;x - y \cdot \frac{t - z}{a}\\
\mathbf{elif}\;y \le 1.030424506076636929976550508445270348949 \cdot 10^{-83}:\\
\;\;\;\;\left(x - \frac{t \cdot y}{a}\right) - \left(-\frac{z \cdot y}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;x - \left(t \cdot \frac{y}{a} + \frac{y}{\frac{a}{-z}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r200663 = x;
double r200664 = y;
double r200665 = z;
double r200666 = t;
double r200667 = r200665 - r200666;
double r200668 = r200664 * r200667;
double r200669 = a;
double r200670 = r200668 / r200669;
double r200671 = r200663 + r200670;
return r200671;
}
double f(double x, double y, double z, double t, double a) {
double r200672 = y;
double r200673 = -2984.114765121557;
bool r200674 = r200672 <= r200673;
double r200675 = x;
double r200676 = t;
double r200677 = z;
double r200678 = r200676 - r200677;
double r200679 = a;
double r200680 = r200678 / r200679;
double r200681 = r200672 * r200680;
double r200682 = r200675 - r200681;
double r200683 = 1.030424506076637e-83;
bool r200684 = r200672 <= r200683;
double r200685 = r200676 * r200672;
double r200686 = r200685 / r200679;
double r200687 = r200675 - r200686;
double r200688 = r200677 * r200672;
double r200689 = r200688 / r200679;
double r200690 = -r200689;
double r200691 = r200687 - r200690;
double r200692 = r200672 / r200679;
double r200693 = r200676 * r200692;
double r200694 = -r200677;
double r200695 = r200679 / r200694;
double r200696 = r200672 / r200695;
double r200697 = r200693 + r200696;
double r200698 = r200675 - r200697;
double r200699 = r200684 ? r200691 : r200698;
double r200700 = r200674 ? r200682 : r200699;
return r200700;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.0 |
|---|---|
| Target | 0.7 |
| Herbie | 1.4 |
if y < -2984.114765121557Initial program 15.2
Simplified3.4
rmApplied div-inv3.5
Applied associate-*l*1.0
Simplified0.9
if -2984.114765121557 < y < 1.030424506076637e-83Initial program 0.6
Simplified1.8
rmApplied sub-neg1.8
Applied distribute-lft-in1.8
Simplified6.1
rmApplied *-un-lft-identity6.1
Applied *-un-lft-identity6.1
Applied distribute-lft-out--6.1
Simplified0.6
if 1.030424506076637e-83 < y Initial program 10.8
Simplified2.8
rmApplied sub-neg2.8
Applied distribute-lft-in2.8
Simplified3.3
Final simplification1.4
herbie shell --seed 2019179
(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)))