x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -1.598281406670949442324391521520754455565 \cdot 10^{-10}:\\
\;\;\;\;\frac{y}{\frac{a}{z - t}} + x\\
\mathbf{elif}\;a \le 6.452314596038023650887609022413351253596 \cdot 10^{-142}:\\
\;\;\;\;\frac{y \cdot \left(z - t\right)}{a} + x\\
\mathbf{elif}\;a \le 332600248696025938523062272:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, z - t, x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{\frac{a}{z - t}} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r198605 = x;
double r198606 = y;
double r198607 = z;
double r198608 = t;
double r198609 = r198607 - r198608;
double r198610 = r198606 * r198609;
double r198611 = a;
double r198612 = r198610 / r198611;
double r198613 = r198605 + r198612;
return r198613;
}
double f(double x, double y, double z, double t, double a) {
double r198614 = a;
double r198615 = -1.5982814066709494e-10;
bool r198616 = r198614 <= r198615;
double r198617 = y;
double r198618 = z;
double r198619 = t;
double r198620 = r198618 - r198619;
double r198621 = r198614 / r198620;
double r198622 = r198617 / r198621;
double r198623 = x;
double r198624 = r198622 + r198623;
double r198625 = 6.452314596038024e-142;
bool r198626 = r198614 <= r198625;
double r198627 = r198617 * r198620;
double r198628 = r198627 / r198614;
double r198629 = r198628 + r198623;
double r198630 = 3.3260024869602594e+26;
bool r198631 = r198614 <= r198630;
double r198632 = r198617 / r198614;
double r198633 = fma(r198632, r198620, r198623);
double r198634 = r198631 ? r198633 : r198624;
double r198635 = r198626 ? r198629 : r198634;
double r198636 = r198616 ? r198624 : r198635;
return r198636;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 6.0 |
|---|---|
| Target | 0.7 |
| Herbie | 0.8 |
if a < -1.5982814066709494e-10 or 3.3260024869602594e+26 < a Initial program 9.3
Simplified0.4
rmApplied fma-udef0.5
Simplified0.5
if -1.5982814066709494e-10 < a < 6.452314596038024e-142Initial program 1.1
if 6.452314596038024e-142 < a < 3.3260024869602594e+26Initial program 0.7
Simplified7.2
rmApplied fma-udef7.2
Simplified6.1
rmApplied *-un-lft-identity6.1
Applied *-un-lft-identity6.1
Applied distribute-lft-out6.1
Simplified1.3
Final simplification0.8
herbie shell --seed 2019179 +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)))