\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 -3.338893372507656821369864426932132802203 \cdot 10^{-32}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\sqrt{9} \cdot \left(\sqrt{9} \cdot \left(t \cdot z\right)\right)\right)\right) + 27 \cdot \left(a \cdot b\right)\\
\mathbf{elif}\;y \cdot 9 \le 7.055620513394500257077151321056658993069 \cdot 10^{57}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(z \cdot 9\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(a \cdot b\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r487505 = x;
double r487506 = 2.0;
double r487507 = r487505 * r487506;
double r487508 = y;
double r487509 = 9.0;
double r487510 = r487508 * r487509;
double r487511 = z;
double r487512 = r487510 * r487511;
double r487513 = t;
double r487514 = r487512 * r487513;
double r487515 = r487507 - r487514;
double r487516 = a;
double r487517 = 27.0;
double r487518 = r487516 * r487517;
double r487519 = b;
double r487520 = r487518 * r487519;
double r487521 = r487515 + r487520;
return r487521;
}
double f(double x, double y, double z, double t, double a, double b) {
double r487522 = y;
double r487523 = 9.0;
double r487524 = r487522 * r487523;
double r487525 = -3.338893372507657e-32;
bool r487526 = r487524 <= r487525;
double r487527 = x;
double r487528 = 2.0;
double r487529 = r487527 * r487528;
double r487530 = sqrt(r487523);
double r487531 = t;
double r487532 = z;
double r487533 = r487531 * r487532;
double r487534 = r487530 * r487533;
double r487535 = r487530 * r487534;
double r487536 = r487522 * r487535;
double r487537 = r487529 - r487536;
double r487538 = 27.0;
double r487539 = a;
double r487540 = b;
double r487541 = r487539 * r487540;
double r487542 = r487538 * r487541;
double r487543 = r487537 + r487542;
double r487544 = 7.0556205133945e+57;
bool r487545 = r487524 <= r487544;
double r487546 = r487532 * r487523;
double r487547 = r487522 * r487546;
double r487548 = r487547 * r487531;
double r487549 = r487529 - r487548;
double r487550 = r487539 * r487538;
double r487551 = r487550 * r487540;
double r487552 = r487549 + r487551;
double r487553 = r487524 * r487533;
double r487554 = r487529 - r487553;
double r487555 = sqrt(r487538);
double r487556 = r487555 * r487541;
double r487557 = r487555 * r487556;
double r487558 = r487554 + r487557;
double r487559 = r487545 ? r487552 : r487558;
double r487560 = r487526 ? r487543 : r487559;
return r487560;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 3.8 |
|---|---|
| Target | 2.6 |
| Herbie | 0.7 |
if (* y 9.0) < -3.338893372507657e-32Initial program 7.1
rmApplied associate-*l*0.8
Simplified0.8
Taylor expanded around 0 0.8
rmApplied associate-*l*0.7
rmApplied add-sqr-sqrt0.7
Applied associate-*l*0.8
if -3.338893372507657e-32 < (* y 9.0) < 7.0556205133945e+57Initial program 0.7
rmApplied associate-*l*0.7
Simplified0.7
if 7.0556205133945e+57 < (* y 9.0) Initial program 10.4
rmApplied associate-*l*0.9
Simplified0.9
Taylor expanded around 0 0.8
rmApplied add-sqr-sqrt0.8
Applied associate-*l*0.9
Final simplification0.7
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))
(+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))