x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;y \le -1.347255096019191366668939936449476710141 \cdot 10^{47}:\\
\;\;\;\;x + \frac{y}{\frac{t}{z - x}}\\
\mathbf{elif}\;y \le 2.40363893826746579460827042444779171101 \cdot 10^{-47}:\\
\;\;\;\;x + \left(y \cdot \left(z - x\right)\right) \cdot \frac{1}{t}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\frac{1}{z - x}}{\frac{y}{t}}} + x\\
\end{array}double f(double x, double y, double z, double t) {
double r299696 = x;
double r299697 = y;
double r299698 = z;
double r299699 = r299698 - r299696;
double r299700 = r299697 * r299699;
double r299701 = t;
double r299702 = r299700 / r299701;
double r299703 = r299696 + r299702;
return r299703;
}
double f(double x, double y, double z, double t) {
double r299704 = y;
double r299705 = -1.3472550960191914e+47;
bool r299706 = r299704 <= r299705;
double r299707 = x;
double r299708 = t;
double r299709 = z;
double r299710 = r299709 - r299707;
double r299711 = r299708 / r299710;
double r299712 = r299704 / r299711;
double r299713 = r299707 + r299712;
double r299714 = 2.403638938267466e-47;
bool r299715 = r299704 <= r299714;
double r299716 = r299704 * r299710;
double r299717 = 1.0;
double r299718 = r299717 / r299708;
double r299719 = r299716 * r299718;
double r299720 = r299707 + r299719;
double r299721 = r299717 / r299710;
double r299722 = r299704 / r299708;
double r299723 = r299721 / r299722;
double r299724 = r299717 / r299723;
double r299725 = r299724 + r299707;
double r299726 = r299715 ? r299720 : r299725;
double r299727 = r299706 ? r299713 : r299726;
return r299727;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.9 |
|---|---|
| Target | 2.1 |
| Herbie | 2.0 |
if y < -1.3472550960191914e+47Initial program 16.3
rmApplied associate-/l*3.2
if -1.3472550960191914e+47 < y < 2.403638938267466e-47Initial program 1.3
rmApplied div-inv1.3
if 2.403638938267466e-47 < y Initial program 11.6
rmApplied associate-/l*1.7
rmApplied div-inv1.8
Applied associate-/r*3.1
rmApplied *-un-lft-identity3.1
Applied *-un-lft-identity3.1
Applied times-frac3.1
Applied associate-/l*3.1
Final simplification2.0
herbie shell --seed 2019305
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))