x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -1.1473918177297942 \cdot 10^{219}:\\
\;\;\;\;x - \frac{y}{a} \cdot \left(z - t\right)\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 6.43849552264531777 \cdot 10^{124}:\\
\;\;\;\;x - \frac{1}{\frac{a}{y \cdot \left(z - t\right)}}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r328110 = x;
double r328111 = y;
double r328112 = z;
double r328113 = t;
double r328114 = r328112 - r328113;
double r328115 = r328111 * r328114;
double r328116 = a;
double r328117 = r328115 / r328116;
double r328118 = r328110 - r328117;
return r328118;
}
double f(double x, double y, double z, double t, double a) {
double r328119 = y;
double r328120 = z;
double r328121 = t;
double r328122 = r328120 - r328121;
double r328123 = r328119 * r328122;
double r328124 = -1.1473918177297942e+219;
bool r328125 = r328123 <= r328124;
double r328126 = x;
double r328127 = a;
double r328128 = r328119 / r328127;
double r328129 = r328128 * r328122;
double r328130 = r328126 - r328129;
double r328131 = 6.438495522645318e+124;
bool r328132 = r328123 <= r328131;
double r328133 = 1.0;
double r328134 = r328127 / r328123;
double r328135 = r328133 / r328134;
double r328136 = r328126 - r328135;
double r328137 = r328127 / r328122;
double r328138 = r328119 / r328137;
double r328139 = r328126 - r328138;
double r328140 = r328132 ? r328136 : r328139;
double r328141 = r328125 ? r328130 : r328140;
return r328141;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.9 |
|---|---|
| Target | 0.7 |
| Herbie | 0.9 |
if (* y (- z t)) < -1.1473918177297942e+219Initial program 30.3
rmApplied associate-/l*0.4
rmApplied associate-/r/0.6
if -1.1473918177297942e+219 < (* y (- z t)) < 6.438495522645318e+124Initial program 0.5
rmApplied clear-num0.5
if 6.438495522645318e+124 < (* y (- z t)) Initial program 17.6
rmApplied associate-/l*2.6
Final simplification0.9
herbie shell --seed 2020064
(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.0761266216389975e-10) (- x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))