\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 -8.4160355144962912 \cdot 10^{233}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 1.79783517118745171 \cdot 10^{166}:\\
\;\;\;\;x \cdot 2 + \mathsf{fma}\left(a, 27 \cdot b, -\left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + {\left(27 \cdot \left(a \cdot b\right)\right)}^{1}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r682754 = x;
double r682755 = 2.0;
double r682756 = r682754 * r682755;
double r682757 = y;
double r682758 = 9.0;
double r682759 = r682757 * r682758;
double r682760 = z;
double r682761 = r682759 * r682760;
double r682762 = t;
double r682763 = r682761 * r682762;
double r682764 = r682756 - r682763;
double r682765 = a;
double r682766 = 27.0;
double r682767 = r682765 * r682766;
double r682768 = b;
double r682769 = r682767 * r682768;
double r682770 = r682764 + r682769;
return r682770;
}
double f(double x, double y, double z, double t, double a, double b) {
double r682771 = y;
double r682772 = 9.0;
double r682773 = r682771 * r682772;
double r682774 = z;
double r682775 = r682773 * r682774;
double r682776 = -8.416035514496291e+233;
bool r682777 = r682775 <= r682776;
double r682778 = x;
double r682779 = 2.0;
double r682780 = r682778 * r682779;
double r682781 = t;
double r682782 = r682774 * r682781;
double r682783 = r682773 * r682782;
double r682784 = r682780 - r682783;
double r682785 = a;
double r682786 = 27.0;
double r682787 = r682785 * r682786;
double r682788 = b;
double r682789 = r682787 * r682788;
double r682790 = r682784 + r682789;
double r682791 = 1.7978351711874517e+166;
bool r682792 = r682775 <= r682791;
double r682793 = r682786 * r682788;
double r682794 = r682775 * r682781;
double r682795 = -r682794;
double r682796 = fma(r682785, r682793, r682795);
double r682797 = r682780 + r682796;
double r682798 = r682772 * r682774;
double r682799 = r682798 * r682781;
double r682800 = r682771 * r682799;
double r682801 = r682780 - r682800;
double r682802 = r682785 * r682788;
double r682803 = r682786 * r682802;
double r682804 = 1.0;
double r682805 = pow(r682803, r682804);
double r682806 = r682801 + r682805;
double r682807 = r682792 ? r682797 : r682806;
double r682808 = r682777 ? r682790 : r682807;
return r682808;
}




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 | 3.9 |
|---|---|
| Target | 2.7 |
| Herbie | 0.6 |
if (* (* y 9.0) z) < -8.416035514496291e+233Initial program 34.0
rmApplied associate-*l*1.2
if -8.416035514496291e+233 < (* (* y 9.0) z) < 1.7978351711874517e+166Initial program 0.5
rmApplied sub-neg0.5
Applied associate-+l+0.5
Simplified0.4
if 1.7978351711874517e+166 < (* (* y 9.0) z) Initial program 22.3
rmApplied associate-*l*21.7
rmApplied pow121.7
Applied pow121.7
Applied pow121.7
Applied pow-prod-down21.7
Applied pow-prod-down21.7
Simplified21.7
rmApplied associate-*l*1.9
Final simplification0.6
herbie shell --seed 2020035 +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)))