\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 -6.783546124099399342803284536509003124637 \cdot 10^{-59} \lor \neg \left(t \le 1.3815157485807560225904258124223973148 \cdot 10^{-154}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + 27 \cdot \left(a \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r814903 = x;
double r814904 = 2.0;
double r814905 = r814903 * r814904;
double r814906 = y;
double r814907 = 9.0;
double r814908 = r814906 * r814907;
double r814909 = z;
double r814910 = r814908 * r814909;
double r814911 = t;
double r814912 = r814910 * r814911;
double r814913 = r814905 - r814912;
double r814914 = a;
double r814915 = 27.0;
double r814916 = r814914 * r814915;
double r814917 = b;
double r814918 = r814916 * r814917;
double r814919 = r814913 + r814918;
return r814919;
}
double f(double x, double y, double z, double t, double a, double b) {
double r814920 = t;
double r814921 = -6.783546124099399e-59;
bool r814922 = r814920 <= r814921;
double r814923 = 1.381515748580756e-154;
bool r814924 = r814920 <= r814923;
double r814925 = !r814924;
bool r814926 = r814922 || r814925;
double r814927 = x;
double r814928 = 2.0;
double r814929 = r814927 * r814928;
double r814930 = y;
double r814931 = 9.0;
double r814932 = r814930 * r814931;
double r814933 = z;
double r814934 = r814932 * r814933;
double r814935 = r814934 * r814920;
double r814936 = r814929 - r814935;
double r814937 = 27.0;
double r814938 = a;
double r814939 = b;
double r814940 = r814938 * r814939;
double r814941 = r814937 * r814940;
double r814942 = r814936 + r814941;
double r814943 = r814933 * r814920;
double r814944 = r814932 * r814943;
double r814945 = r814929 - r814944;
double r814946 = r814937 * r814939;
double r814947 = r814938 * r814946;
double r814948 = r814945 + r814947;
double r814949 = r814926 ? r814942 : r814948;
return r814949;
}




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.3 |
| Herbie | 1.2 |
if t < -6.783546124099399e-59 or 1.381515748580756e-154 < t Initial program 1.5
Taylor expanded around 0 1.5
if -6.783546124099399e-59 < t < 1.381515748580756e-154Initial program 6.7
rmApplied associate-*l*6.8
rmApplied associate-*l*0.7
Final simplification1.2
herbie shell --seed 2019356
(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)))