x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;y \le -735739220375.78149:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{t}, z - x, x\right)\\
\mathbf{elif}\;y \le 8.34934423511015436 \cdot 10^{-219}:\\
\;\;\;\;x + \frac{y \cdot z + y \cdot \left(-x\right)}{t}\\
\mathbf{elif}\;y \le 7.97693725199553989 \cdot 10^{-106}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{t}, z - x, x\right)\\
\mathbf{elif}\;y \le 1.96514479102399276 \cdot 10^{280}:\\
\;\;\;\;x + y \cdot \frac{z - x}{t}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{t}, z - x, x\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r234711 = x;
double r234712 = y;
double r234713 = z;
double r234714 = r234713 - r234711;
double r234715 = r234712 * r234714;
double r234716 = t;
double r234717 = r234715 / r234716;
double r234718 = r234711 + r234717;
return r234718;
}
double f(double x, double y, double z, double t) {
double r234719 = y;
double r234720 = -735739220375.7815;
bool r234721 = r234719 <= r234720;
double r234722 = t;
double r234723 = r234719 / r234722;
double r234724 = z;
double r234725 = x;
double r234726 = r234724 - r234725;
double r234727 = fma(r234723, r234726, r234725);
double r234728 = 8.349344235110154e-219;
bool r234729 = r234719 <= r234728;
double r234730 = r234719 * r234724;
double r234731 = -r234725;
double r234732 = r234719 * r234731;
double r234733 = r234730 + r234732;
double r234734 = r234733 / r234722;
double r234735 = r234725 + r234734;
double r234736 = 7.97693725199554e-106;
bool r234737 = r234719 <= r234736;
double r234738 = 1.9651447910239928e+280;
bool r234739 = r234719 <= r234738;
double r234740 = r234726 / r234722;
double r234741 = r234719 * r234740;
double r234742 = r234725 + r234741;
double r234743 = r234739 ? r234742 : r234727;
double r234744 = r234737 ? r234727 : r234743;
double r234745 = r234729 ? r234735 : r234744;
double r234746 = r234721 ? r234727 : r234745;
return r234746;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.3 |
|---|---|
| Target | 1.9 |
| Herbie | 2.1 |
if y < -735739220375.7815 or 8.349344235110154e-219 < y < 7.97693725199554e-106 or 1.9651447910239928e+280 < y Initial program 11.1
Simplified2.9
if -735739220375.7815 < y < 8.349344235110154e-219Initial program 0.9
rmApplied sub-neg0.9
Applied distribute-lft-in0.9
if 7.97693725199554e-106 < y < 1.9651447910239928e+280Initial program 9.2
rmApplied *-un-lft-identity9.2
Applied times-frac3.1
Simplified3.1
Final simplification2.1
herbie shell --seed 2020027 +o rules:numerics
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))