x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -1.6326385093152292 \cdot 10^{284} \lor \neg \left(y \cdot \left(z - t\right) \le 7.14285184082454088 \cdot 10^{130}\right):\\
\;\;\;\;x + \left(z \cdot \frac{y}{a} + \frac{y}{a} \cdot \left(-t\right)\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 r399249 = x;
double r399250 = y;
double r399251 = z;
double r399252 = t;
double r399253 = r399251 - r399252;
double r399254 = r399250 * r399253;
double r399255 = a;
double r399256 = r399254 / r399255;
double r399257 = r399249 + r399256;
return r399257;
}
double f(double x, double y, double z, double t, double a) {
double r399258 = y;
double r399259 = z;
double r399260 = t;
double r399261 = r399259 - r399260;
double r399262 = r399258 * r399261;
double r399263 = -1.6326385093152292e+284;
bool r399264 = r399262 <= r399263;
double r399265 = 7.142851840824541e+130;
bool r399266 = r399262 <= r399265;
double r399267 = !r399266;
bool r399268 = r399264 || r399267;
double r399269 = x;
double r399270 = a;
double r399271 = r399258 / r399270;
double r399272 = r399259 * r399271;
double r399273 = -r399260;
double r399274 = r399271 * r399273;
double r399275 = r399272 + r399274;
double r399276 = r399269 + r399275;
double r399277 = r399262 / r399270;
double r399278 = r399269 + r399277;
double r399279 = r399268 ? r399276 : r399278;
return r399279;
}




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.8 |
| Herbie | 0.6 |
if (* y (- z t)) < -1.6326385093152292e+284 or 7.142851840824541e+130 < (* y (- z t)) Initial program 27.6
rmApplied associate-/l*1.9
rmApplied associate-/r/1.3
rmApplied sub-neg1.3
Applied distribute-lft-in1.3
Simplified1.3
if -1.6326385093152292e+284 < (* y (- z t)) < 7.142851840824541e+130Initial program 0.4
Final simplification0.6
herbie shell --seed 2020057
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
: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)))