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 r290078 = x;
double r290079 = y;
double r290080 = z;
double r290081 = t;
double r290082 = r290080 - r290081;
double r290083 = r290079 * r290082;
double r290084 = a;
double r290085 = r290083 / r290084;
double r290086 = r290078 - r290085;
return r290086;
}
double f(double x, double y, double z, double t, double a) {
double r290087 = y;
double r290088 = z;
double r290089 = t;
double r290090 = r290088 - r290089;
double r290091 = r290087 * r290090;
double r290092 = a;
double r290093 = r290091 / r290092;
double r290094 = -5.5621956809643025e+178;
bool r290095 = r290093 <= r290094;
double r290096 = 1.3317847127302016e-49;
bool r290097 = r290093 <= r290096;
double r290098 = !r290097;
bool r290099 = r290095 || r290098;
double r290100 = x;
double r290101 = r290087 / r290092;
double r290102 = r290090 * r290101;
double r290103 = -r290102;
double r290104 = r290100 + r290103;
double r290105 = r290100 - r290093;
double r290106 = r290099 ? r290104 : r290105;
return r290106;
}




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)))