\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;y \cdot 9 \le -2.224794104309224529458788310876116156578:\\
\;\;\;\;\mathsf{fma}\left(27, a \cdot b, x \cdot 2 - \left(y \cdot \left(z \cdot t\right)\right) \cdot 9\right)\\
\mathbf{elif}\;y \cdot 9 \le 9.796039309886120902205025799034389667047 \cdot 10^{68}:\\
\;\;\;\;\mathsf{fma}\left(27, a \cdot b, x \cdot 2 - \left(\left(9 \cdot t\right) \cdot y\right) \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(27, a \cdot b, x \cdot 2 - \left(y \cdot \left(z \cdot t\right)\right) \cdot 9\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r31311086 = x;
double r31311087 = 2.0;
double r31311088 = r31311086 * r31311087;
double r31311089 = y;
double r31311090 = 9.0;
double r31311091 = r31311089 * r31311090;
double r31311092 = z;
double r31311093 = r31311091 * r31311092;
double r31311094 = t;
double r31311095 = r31311093 * r31311094;
double r31311096 = r31311088 - r31311095;
double r31311097 = a;
double r31311098 = 27.0;
double r31311099 = r31311097 * r31311098;
double r31311100 = b;
double r31311101 = r31311099 * r31311100;
double r31311102 = r31311096 + r31311101;
return r31311102;
}
double f(double x, double y, double z, double t, double a, double b) {
double r31311103 = y;
double r31311104 = 9.0;
double r31311105 = r31311103 * r31311104;
double r31311106 = -2.2247941043092245;
bool r31311107 = r31311105 <= r31311106;
double r31311108 = 27.0;
double r31311109 = a;
double r31311110 = b;
double r31311111 = r31311109 * r31311110;
double r31311112 = x;
double r31311113 = 2.0;
double r31311114 = r31311112 * r31311113;
double r31311115 = z;
double r31311116 = t;
double r31311117 = r31311115 * r31311116;
double r31311118 = r31311103 * r31311117;
double r31311119 = r31311118 * r31311104;
double r31311120 = r31311114 - r31311119;
double r31311121 = fma(r31311108, r31311111, r31311120);
double r31311122 = 9.79603930988612e+68;
bool r31311123 = r31311105 <= r31311122;
double r31311124 = r31311104 * r31311116;
double r31311125 = r31311124 * r31311103;
double r31311126 = r31311125 * r31311115;
double r31311127 = r31311114 - r31311126;
double r31311128 = fma(r31311108, r31311111, r31311127);
double r31311129 = r31311123 ? r31311128 : r31311121;
double r31311130 = r31311107 ? r31311121 : r31311129;
return r31311130;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 4.0 |
|---|---|
| Target | 2.7 |
| Herbie | 0.6 |
if (* y 9.0) < -2.2247941043092245 or 9.79603930988612e+68 < (* y 9.0) Initial program 9.3
Simplified9.3
Taylor expanded around inf 9.0
Simplified9.0
Taylor expanded around inf 9.0
rmApplied associate-*r*0.6
if -2.2247941043092245 < (* y 9.0) < 9.79603930988612e+68Initial program 0.8
Simplified0.8
Taylor expanded around inf 0.8
Simplified0.8
rmApplied associate-*l*0.7
Final simplification0.6
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* a (* 27.0 b))) (+ (- (* x 2.0) (* 9.0 (* y (* t z)))) (* (* a 27.0) b)))
(+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)))