\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 -2.8309156342649306 \cdot 10^{217}:\\
\;\;\;\;\mathsf{fma}\left(a, 27 \cdot b, x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right)\\
\mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 7.881184043757349 \cdot 10^{221}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\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 r897883 = x;
double r897884 = 2.0;
double r897885 = r897883 * r897884;
double r897886 = y;
double r897887 = 9.0;
double r897888 = r897886 * r897887;
double r897889 = z;
double r897890 = r897888 * r897889;
double r897891 = t;
double r897892 = r897890 * r897891;
double r897893 = r897885 - r897892;
double r897894 = a;
double r897895 = 27.0;
double r897896 = r897894 * r897895;
double r897897 = b;
double r897898 = r897896 * r897897;
double r897899 = r897893 + r897898;
return r897899;
}
double f(double x, double y, double z, double t, double a, double b) {
double r897900 = y;
double r897901 = 9.0;
double r897902 = r897900 * r897901;
double r897903 = z;
double r897904 = r897902 * r897903;
double r897905 = -2.8309156342649306e+217;
bool r897906 = r897904 <= r897905;
double r897907 = a;
double r897908 = 27.0;
double r897909 = b;
double r897910 = r897908 * r897909;
double r897911 = x;
double r897912 = 2.0;
double r897913 = r897911 * r897912;
double r897914 = t;
double r897915 = r897903 * r897914;
double r897916 = r897902 * r897915;
double r897917 = r897913 - r897916;
double r897918 = fma(r897907, r897910, r897917);
double r897919 = 7.881184043757349e+221;
bool r897920 = r897904 <= r897919;
double r897921 = r897904 * r897914;
double r897922 = r897913 - r897921;
double r897923 = r897907 * r897908;
double r897924 = r897923 * r897909;
double r897925 = r897922 + r897924;
double r897926 = r897901 * r897903;
double r897927 = r897926 * r897914;
double r897928 = r897900 * r897927;
double r897929 = r897913 - r897928;
double r897930 = r897929 + r897924;
double r897931 = r897920 ? r897925 : r897930;
double r897932 = r897906 ? r897918 : r897931;
return r897932;
}




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.5 |
|---|---|
| Target | 2.5 |
| Herbie | 0.4 |
if (* (* y 9.0) z) < -2.8309156342649306e+217Initial program 28.4
Simplified28.5
rmApplied associate-*l*0.8
if -2.8309156342649306e+217 < (* (* y 9.0) z) < 7.881184043757349e+221Initial program 0.4
rmApplied associate-*l*0.4
rmApplied associate-*r*0.4
if 7.881184043757349e+221 < (* (* y 9.0) z) Initial program 30.1
rmApplied associate-*l*29.2
rmApplied associate-*l*0.7
Final simplification0.4
herbie shell --seed 2020056 +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)))