\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}\;\left(y \cdot 9\right) \cdot z \le -7.480026204831319000778820759872426868962 \cdot 10^{303}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(t \cdot z\right) \cdot 9\right) \cdot y\right) + b \cdot \left(a \cdot 27\right)\\
\mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 3.519441011210434308575952430482291505964 \cdot 10^{182}:\\
\;\;\;\;b \cdot \left(a \cdot 27\right) + \left(x \cdot 2 - \left(9 \cdot \left(z \cdot y\right)\right) \cdot t\right)\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(27 \cdot b\right) + \left(x \cdot 2 - \left(t \cdot z\right) \cdot \left(y \cdot 9\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r36165491 = x;
double r36165492 = 2.0;
double r36165493 = r36165491 * r36165492;
double r36165494 = y;
double r36165495 = 9.0;
double r36165496 = r36165494 * r36165495;
double r36165497 = z;
double r36165498 = r36165496 * r36165497;
double r36165499 = t;
double r36165500 = r36165498 * r36165499;
double r36165501 = r36165493 - r36165500;
double r36165502 = a;
double r36165503 = 27.0;
double r36165504 = r36165502 * r36165503;
double r36165505 = b;
double r36165506 = r36165504 * r36165505;
double r36165507 = r36165501 + r36165506;
return r36165507;
}
double f(double x, double y, double z, double t, double a, double b) {
double r36165508 = y;
double r36165509 = 9.0;
double r36165510 = r36165508 * r36165509;
double r36165511 = z;
double r36165512 = r36165510 * r36165511;
double r36165513 = -7.480026204831319e+303;
bool r36165514 = r36165512 <= r36165513;
double r36165515 = x;
double r36165516 = 2.0;
double r36165517 = r36165515 * r36165516;
double r36165518 = t;
double r36165519 = r36165518 * r36165511;
double r36165520 = r36165519 * r36165509;
double r36165521 = r36165520 * r36165508;
double r36165522 = r36165517 - r36165521;
double r36165523 = b;
double r36165524 = a;
double r36165525 = 27.0;
double r36165526 = r36165524 * r36165525;
double r36165527 = r36165523 * r36165526;
double r36165528 = r36165522 + r36165527;
double r36165529 = 3.5194410112104343e+182;
bool r36165530 = r36165512 <= r36165529;
double r36165531 = r36165511 * r36165508;
double r36165532 = r36165509 * r36165531;
double r36165533 = r36165532 * r36165518;
double r36165534 = r36165517 - r36165533;
double r36165535 = r36165527 + r36165534;
double r36165536 = r36165525 * r36165523;
double r36165537 = r36165524 * r36165536;
double r36165538 = r36165519 * r36165510;
double r36165539 = r36165517 - r36165538;
double r36165540 = r36165537 + r36165539;
double r36165541 = r36165530 ? r36165535 : r36165540;
double r36165542 = r36165514 ? r36165528 : r36165541;
return r36165542;
}




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.7 |
|---|---|
| Target | 2.7 |
| Herbie | 0.6 |
if (* (* y 9.0) z) < -7.480026204831319e+303Initial program 62.4
rmApplied associate-*l*1.9
rmApplied associate-*l*0.6
if -7.480026204831319e+303 < (* (* y 9.0) z) < 3.5194410112104343e+182Initial program 0.5
Taylor expanded around 0 0.5
if 3.5194410112104343e+182 < (* (* y 9.0) z) Initial program 23.6
rmApplied associate-*l*1.5
rmApplied associate-*l*1.5
Final simplification0.6
herbie shell --seed 2019170
(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)))