x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -1.598281406670949442324391521520754455565 \cdot 10^{-10}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;a \le 2.399671998072701683137690037832409821452 \cdot 10^{-142}:\\
\;\;\;\;x + \left(\frac{y \cdot z}{a} - \frac{t \cdot y}{a}\right)\\
\mathbf{elif}\;a \le 2.181728582825251587184966617016023093761 \cdot 10^{52}:\\
\;\;\;\;x + \frac{\frac{y}{a}}{\frac{1}{z - t}}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r19935679 = x;
double r19935680 = y;
double r19935681 = z;
double r19935682 = t;
double r19935683 = r19935681 - r19935682;
double r19935684 = r19935680 * r19935683;
double r19935685 = a;
double r19935686 = r19935684 / r19935685;
double r19935687 = r19935679 + r19935686;
return r19935687;
}
double f(double x, double y, double z, double t, double a) {
double r19935688 = a;
double r19935689 = -1.5982814066709494e-10;
bool r19935690 = r19935688 <= r19935689;
double r19935691 = x;
double r19935692 = y;
double r19935693 = z;
double r19935694 = t;
double r19935695 = r19935693 - r19935694;
double r19935696 = r19935688 / r19935695;
double r19935697 = r19935692 / r19935696;
double r19935698 = r19935691 + r19935697;
double r19935699 = 2.3996719980727017e-142;
bool r19935700 = r19935688 <= r19935699;
double r19935701 = r19935692 * r19935693;
double r19935702 = r19935701 / r19935688;
double r19935703 = r19935694 * r19935692;
double r19935704 = r19935703 / r19935688;
double r19935705 = r19935702 - r19935704;
double r19935706 = r19935691 + r19935705;
double r19935707 = 2.1817285828252516e+52;
bool r19935708 = r19935688 <= r19935707;
double r19935709 = r19935692 / r19935688;
double r19935710 = 1.0;
double r19935711 = r19935710 / r19935695;
double r19935712 = r19935709 / r19935711;
double r19935713 = r19935691 + r19935712;
double r19935714 = r19935708 ? r19935713 : r19935698;
double r19935715 = r19935700 ? r19935706 : r19935714;
double r19935716 = r19935690 ? r19935698 : r19935715;
return r19935716;
}




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 | 0.8 |
if a < -1.5982814066709494e-10 or 2.1817285828252516e+52 < a Initial program 9.6
rmApplied associate-/l*0.5
if -1.5982814066709494e-10 < a < 2.3996719980727017e-142Initial program 1.1
Taylor expanded around 0 1.1
Simplified4.4
rmApplied *-un-lft-identity4.4
Applied add-cube-cbrt5.1
Applied times-frac5.1
Applied associate-*l*12.6
Taylor expanded around 0 1.1
if 2.3996719980727017e-142 < a < 2.1817285828252516e+52Initial program 1.1
rmApplied associate-/l*5.2
rmApplied div-inv5.3
Applied associate-/r*1.3
Final simplification0.8
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)))