\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}\;t \le -2.1150978170932987 \cdot 10^{23}:\\
\;\;\;\;\mathsf{fma}\left(a \cdot 27, b, 2 \cdot x - \left(9 \cdot t\right) \cdot \left(z \cdot y\right)\right)\\
\mathbf{elif}\;t \le 6.18142103597057311 \cdot 10^{-49}:\\
\;\;\;\;\mathsf{fma}\left(a \cdot 27, b, 2 \cdot x - \left(\left(9 \cdot t\right) \cdot z\right) \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(27, a \cdot b, 2 \cdot x\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r487222 = x;
double r487223 = 2.0;
double r487224 = r487222 * r487223;
double r487225 = y;
double r487226 = 9.0;
double r487227 = r487225 * r487226;
double r487228 = z;
double r487229 = r487227 * r487228;
double r487230 = t;
double r487231 = r487229 * r487230;
double r487232 = r487224 - r487231;
double r487233 = a;
double r487234 = 27.0;
double r487235 = r487233 * r487234;
double r487236 = b;
double r487237 = r487235 * r487236;
double r487238 = r487232 + r487237;
return r487238;
}
double f(double x, double y, double z, double t, double a, double b) {
double r487239 = t;
double r487240 = -2.1150978170932987e+23;
bool r487241 = r487239 <= r487240;
double r487242 = a;
double r487243 = 27.0;
double r487244 = r487242 * r487243;
double r487245 = b;
double r487246 = 2.0;
double r487247 = x;
double r487248 = r487246 * r487247;
double r487249 = 9.0;
double r487250 = r487249 * r487239;
double r487251 = z;
double r487252 = y;
double r487253 = r487251 * r487252;
double r487254 = r487250 * r487253;
double r487255 = r487248 - r487254;
double r487256 = fma(r487244, r487245, r487255);
double r487257 = 6.181421035970573e-49;
bool r487258 = r487239 <= r487257;
double r487259 = r487250 * r487251;
double r487260 = r487259 * r487252;
double r487261 = r487248 - r487260;
double r487262 = fma(r487244, r487245, r487261);
double r487263 = r487242 * r487245;
double r487264 = fma(r487243, r487263, r487248);
double r487265 = r487239 * r487253;
double r487266 = r487249 * r487265;
double r487267 = r487264 - r487266;
double r487268 = r487258 ? r487262 : r487267;
double r487269 = r487241 ? r487256 : r487268;
return r487269;
}




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.9 |
| Herbie | 0.8 |
if t < -2.1150978170932987e+23Initial program 0.7
Simplified0.7
Taylor expanded around inf 0.7
rmApplied associate-*r*0.9
if -2.1150978170932987e+23 < t < 6.181421035970573e-49Initial program 6.5
Simplified6.5
Taylor expanded around inf 6.4
rmApplied associate-*r*6.4
rmApplied associate-*r*0.7
if 6.181421035970573e-49 < t Initial program 1.0
Simplified1.0
Taylor expanded around inf 0.9
Taylor expanded around inf 0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2019199 +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)))