\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 -1.509627698880911586338015526628233224088 \cdot 10^{129} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 2.414314480791499273783363683236492721004 \cdot 10^{188}\right):\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + 27 \cdot \left(a \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(9 \cdot z\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r675568 = x;
double r675569 = 2.0;
double r675570 = r675568 * r675569;
double r675571 = y;
double r675572 = 9.0;
double r675573 = r675571 * r675572;
double r675574 = z;
double r675575 = r675573 * r675574;
double r675576 = t;
double r675577 = r675575 * r675576;
double r675578 = r675570 - r675577;
double r675579 = a;
double r675580 = 27.0;
double r675581 = r675579 * r675580;
double r675582 = b;
double r675583 = r675581 * r675582;
double r675584 = r675578 + r675583;
return r675584;
}
double f(double x, double y, double z, double t, double a, double b) {
double r675585 = y;
double r675586 = 9.0;
double r675587 = r675585 * r675586;
double r675588 = z;
double r675589 = r675587 * r675588;
double r675590 = -1.5096276988809116e+129;
bool r675591 = r675589 <= r675590;
double r675592 = 2.4143144807914993e+188;
bool r675593 = r675589 <= r675592;
double r675594 = !r675593;
bool r675595 = r675591 || r675594;
double r675596 = x;
double r675597 = 2.0;
double r675598 = r675596 * r675597;
double r675599 = r675586 * r675588;
double r675600 = t;
double r675601 = r675599 * r675600;
double r675602 = r675585 * r675601;
double r675603 = r675598 - r675602;
double r675604 = 27.0;
double r675605 = a;
double r675606 = b;
double r675607 = r675605 * r675606;
double r675608 = r675604 * r675607;
double r675609 = r675603 + r675608;
double r675610 = r675585 * r675599;
double r675611 = r675610 * r675600;
double r675612 = r675598 - r675611;
double r675613 = r675605 * r675604;
double r675614 = r675613 * r675606;
double r675615 = r675612 + r675614;
double r675616 = r675595 ? r675609 : r675615;
return r675616;
}




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.6 |
|---|---|
| Target | 2.6 |
| Herbie | 0.7 |
if (* (* y 9.0) z) < -1.5096276988809116e+129 or 2.4143144807914993e+188 < (* (* y 9.0) z) Initial program 19.0
rmApplied associate-*l*2.3
rmApplied associate-*l*1.8
rmApplied associate-*r*1.9
Taylor expanded around 0 1.7
if -1.5096276988809116e+129 < (* (* y 9.0) z) < 2.4143144807914993e+188Initial program 0.5
rmApplied associate-*l*0.5
Final simplification0.7
herbie shell --seed 2020001 +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)))