x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -1.598281406670949442324391521520754455565 \cdot 10^{-10}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;a \le 6.452314596038023650887609022413351253596 \cdot 10^{-142}:\\
\;\;\;\;\frac{\left(z - t\right) \cdot y}{a} + x\\
\mathbf{elif}\;a \le 1.051524309559396278412548750425595537339 \cdot 10^{-47}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, z - t, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{z - t}{a}, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r13168675 = x;
double r13168676 = y;
double r13168677 = z;
double r13168678 = t;
double r13168679 = r13168677 - r13168678;
double r13168680 = r13168676 * r13168679;
double r13168681 = a;
double r13168682 = r13168680 / r13168681;
double r13168683 = r13168675 + r13168682;
return r13168683;
}
double f(double x, double y, double z, double t, double a) {
double r13168684 = a;
double r13168685 = -1.5982814066709494e-10;
bool r13168686 = r13168684 <= r13168685;
double r13168687 = x;
double r13168688 = y;
double r13168689 = z;
double r13168690 = t;
double r13168691 = r13168689 - r13168690;
double r13168692 = r13168684 / r13168691;
double r13168693 = r13168688 / r13168692;
double r13168694 = r13168687 + r13168693;
double r13168695 = 6.452314596038024e-142;
bool r13168696 = r13168684 <= r13168695;
double r13168697 = r13168691 * r13168688;
double r13168698 = r13168697 / r13168684;
double r13168699 = r13168698 + r13168687;
double r13168700 = 1.0515243095593963e-47;
bool r13168701 = r13168684 <= r13168700;
double r13168702 = r13168688 / r13168684;
double r13168703 = fma(r13168702, r13168691, r13168687);
double r13168704 = r13168691 / r13168684;
double r13168705 = fma(r13168688, r13168704, r13168687);
double r13168706 = r13168701 ? r13168703 : r13168705;
double r13168707 = r13168696 ? r13168699 : r13168706;
double r13168708 = r13168686 ? r13168694 : r13168707;
return r13168708;
}




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-10Initial program 8.4
rmApplied associate-/l*0.4
if -1.5982814066709494e-10 < a < 6.452314596038024e-142Initial program 1.1
if 6.452314596038024e-142 < a < 1.0515243095593963e-47Initial program 0.6
rmApplied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied distribute-lft-out0.6
Simplified2.2
if 1.0515243095593963e-47 < a Initial program 8.7
Simplified0.7
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)))