x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -1.7970758753613627 \cdot 10^{+105}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a}\\
\mathbf{elif}\;a \le 7.171838065420707 \cdot 10^{-249}:\\
\;\;\;\;\frac{\left(z - t\right) \cdot y}{a} + x\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{y}{a}, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r19546518 = x;
double r19546519 = y;
double r19546520 = z;
double r19546521 = t;
double r19546522 = r19546520 - r19546521;
double r19546523 = r19546519 * r19546522;
double r19546524 = a;
double r19546525 = r19546523 / r19546524;
double r19546526 = r19546518 + r19546525;
return r19546526;
}
double f(double x, double y, double z, double t, double a) {
double r19546527 = a;
double r19546528 = -1.7970758753613627e+105;
bool r19546529 = r19546527 <= r19546528;
double r19546530 = x;
double r19546531 = y;
double r19546532 = z;
double r19546533 = t;
double r19546534 = r19546532 - r19546533;
double r19546535 = r19546534 / r19546527;
double r19546536 = r19546531 * r19546535;
double r19546537 = r19546530 + r19546536;
double r19546538 = 7.171838065420707e-249;
bool r19546539 = r19546527 <= r19546538;
double r19546540 = r19546534 * r19546531;
double r19546541 = r19546540 / r19546527;
double r19546542 = r19546541 + r19546530;
double r19546543 = r19546531 / r19546527;
double r19546544 = fma(r19546534, r19546543, r19546530);
double r19546545 = r19546539 ? r19546542 : r19546544;
double r19546546 = r19546529 ? r19546537 : r19546545;
return r19546546;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 6.5 |
|---|---|
| Target | 0.6 |
| Herbie | 1.9 |
if a < -1.7970758753613627e+105Initial program 11.8
rmApplied *-un-lft-identity11.8
Applied times-frac0.6
Simplified0.6
if -1.7970758753613627e+105 < a < 7.171838065420707e-249Initial program 2.4
rmApplied +-commutative2.4
if 7.171838065420707e-249 < a Initial program 6.8
Simplified2.2
Final simplification1.9
herbie shell --seed 2019165 +o rules:numerics
(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)))