x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{a} \le -5.562195680964302490149328614550000366002 \cdot 10^{178} \lor \neg \left(\frac{y \cdot \left(z - t\right)}{a} \le 1.33178471273020163591162836894697555885 \cdot 10^{-49}\right):\\
\;\;\;\;x + \left(-\left(z - t\right) \cdot \frac{y}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r888132 = x;
double r888133 = y;
double r888134 = z;
double r888135 = t;
double r888136 = r888134 - r888135;
double r888137 = r888133 * r888136;
double r888138 = a;
double r888139 = r888137 / r888138;
double r888140 = r888132 - r888139;
return r888140;
}
double f(double x, double y, double z, double t, double a) {
double r888141 = y;
double r888142 = z;
double r888143 = t;
double r888144 = r888142 - r888143;
double r888145 = r888141 * r888144;
double r888146 = a;
double r888147 = r888145 / r888146;
double r888148 = -5.5621956809643025e+178;
bool r888149 = r888147 <= r888148;
double r888150 = 1.3317847127302016e-49;
bool r888151 = r888147 <= r888150;
double r888152 = !r888151;
bool r888153 = r888149 || r888152;
double r888154 = x;
double r888155 = r888141 / r888146;
double r888156 = r888144 * r888155;
double r888157 = -r888156;
double r888158 = r888154 + r888157;
double r888159 = r888154 - r888147;
double r888160 = r888153 ? r888158 : r888159;
return r888160;
}




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 | 1.5 |
if (/ (* y (- z t)) a) < -5.5621956809643025e+178 or 1.3317847127302016e-49 < (/ (* y (- z t)) a) Initial program 13.8
rmApplied clear-num13.8
rmApplied sub-neg13.8
Simplified2.7
rmApplied div-inv3.1
Simplified3.0
if -5.5621956809643025e+178 < (/ (* y (- z t)) a) < 1.3317847127302016e-49Initial program 0.4
Final simplification1.5
herbie shell --seed 2019303
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:precision binary64
:herbie-target
(if (< y -1.07612662163899753e-10) (- x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.8944268627920891e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))