\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 -343576687873015744:\\
\;\;\;\;\left(x \cdot 2 - t \cdot \left(\left(9 \cdot z\right) \cdot y\right)\right) + \left(27 \cdot a\right) \cdot b\\
\mathbf{elif}\;t \le 8.97312458660111021791233695576255422226 \cdot 10^{-74}:\\
\;\;\;\;x \cdot 2 + \left(a \cdot \left(27 \cdot b\right) - \left(t \cdot z\right) \cdot \left(9 \cdot y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - t \cdot \left(\left(9 \cdot z\right) \cdot y\right)\right) + \left(27 \cdot a\right) \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r40141709 = x;
double r40141710 = 2.0;
double r40141711 = r40141709 * r40141710;
double r40141712 = y;
double r40141713 = 9.0;
double r40141714 = r40141712 * r40141713;
double r40141715 = z;
double r40141716 = r40141714 * r40141715;
double r40141717 = t;
double r40141718 = r40141716 * r40141717;
double r40141719 = r40141711 - r40141718;
double r40141720 = a;
double r40141721 = 27.0;
double r40141722 = r40141720 * r40141721;
double r40141723 = b;
double r40141724 = r40141722 * r40141723;
double r40141725 = r40141719 + r40141724;
return r40141725;
}
double f(double x, double y, double z, double t, double a, double b) {
double r40141726 = t;
double r40141727 = -3.4357668787301574e+17;
bool r40141728 = r40141726 <= r40141727;
double r40141729 = x;
double r40141730 = 2.0;
double r40141731 = r40141729 * r40141730;
double r40141732 = 9.0;
double r40141733 = z;
double r40141734 = r40141732 * r40141733;
double r40141735 = y;
double r40141736 = r40141734 * r40141735;
double r40141737 = r40141726 * r40141736;
double r40141738 = r40141731 - r40141737;
double r40141739 = 27.0;
double r40141740 = a;
double r40141741 = r40141739 * r40141740;
double r40141742 = b;
double r40141743 = r40141741 * r40141742;
double r40141744 = r40141738 + r40141743;
double r40141745 = 8.97312458660111e-74;
bool r40141746 = r40141726 <= r40141745;
double r40141747 = r40141739 * r40141742;
double r40141748 = r40141740 * r40141747;
double r40141749 = r40141726 * r40141733;
double r40141750 = r40141732 * r40141735;
double r40141751 = r40141749 * r40141750;
double r40141752 = r40141748 - r40141751;
double r40141753 = r40141731 + r40141752;
double r40141754 = r40141746 ? r40141753 : r40141744;
double r40141755 = r40141728 ? r40141744 : r40141754;
return r40141755;
}




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.5 |
|---|---|
| Target | 2.6 |
| Herbie | 0.7 |
if t < -3.4357668787301574e+17 or 8.97312458660111e-74 < t Initial program 0.8
rmApplied associate-*l*0.7
if -3.4357668787301574e+17 < t < 8.97312458660111e-74Initial program 6.1
rmApplied sub-neg6.1
Applied associate-+l+6.1
Simplified0.7
Final simplification0.7
herbie shell --seed 2019171
(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)))