\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}\;y \cdot 9 \le -2.434616547682554976717028694110922515392:\\
\;\;\;\;\left(27 \cdot a\right) \cdot b + \left(x \cdot 2 - \left(\left(z \cdot 9\right) \cdot t\right) \cdot y\right)\\
\mathbf{elif}\;y \cdot 9 \le 1.245717551989869811727447027402159666676 \cdot 10^{-192}:\\
\;\;\;\;\left(\left(27 \cdot a\right) \cdot b - \left(y \cdot t\right) \cdot \left(z \cdot 9\right)\right) + x \cdot 2\\
\mathbf{else}:\\
\;\;\;\;x \cdot 2 + \left(a \cdot \left(27 \cdot b\right) - \sqrt{y} \cdot \left(\left(9 \cdot \left(z \cdot t\right)\right) \cdot \sqrt{y}\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r36154892 = x;
double r36154893 = 2.0;
double r36154894 = r36154892 * r36154893;
double r36154895 = y;
double r36154896 = 9.0;
double r36154897 = r36154895 * r36154896;
double r36154898 = z;
double r36154899 = r36154897 * r36154898;
double r36154900 = t;
double r36154901 = r36154899 * r36154900;
double r36154902 = r36154894 - r36154901;
double r36154903 = a;
double r36154904 = 27.0;
double r36154905 = r36154903 * r36154904;
double r36154906 = b;
double r36154907 = r36154905 * r36154906;
double r36154908 = r36154902 + r36154907;
return r36154908;
}
double f(double x, double y, double z, double t, double a, double b) {
double r36154909 = y;
double r36154910 = 9.0;
double r36154911 = r36154909 * r36154910;
double r36154912 = -2.434616547682555;
bool r36154913 = r36154911 <= r36154912;
double r36154914 = 27.0;
double r36154915 = a;
double r36154916 = r36154914 * r36154915;
double r36154917 = b;
double r36154918 = r36154916 * r36154917;
double r36154919 = x;
double r36154920 = 2.0;
double r36154921 = r36154919 * r36154920;
double r36154922 = z;
double r36154923 = r36154922 * r36154910;
double r36154924 = t;
double r36154925 = r36154923 * r36154924;
double r36154926 = r36154925 * r36154909;
double r36154927 = r36154921 - r36154926;
double r36154928 = r36154918 + r36154927;
double r36154929 = 1.2457175519898698e-192;
bool r36154930 = r36154911 <= r36154929;
double r36154931 = r36154909 * r36154924;
double r36154932 = r36154931 * r36154923;
double r36154933 = r36154918 - r36154932;
double r36154934 = r36154933 + r36154921;
double r36154935 = r36154914 * r36154917;
double r36154936 = r36154915 * r36154935;
double r36154937 = sqrt(r36154909);
double r36154938 = r36154922 * r36154924;
double r36154939 = r36154910 * r36154938;
double r36154940 = r36154939 * r36154937;
double r36154941 = r36154937 * r36154940;
double r36154942 = r36154936 - r36154941;
double r36154943 = r36154921 + r36154942;
double r36154944 = r36154930 ? r36154934 : r36154943;
double r36154945 = r36154913 ? r36154928 : r36154944;
return r36154945;
}




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 | 4.0 |
|---|---|
| Target | 2.7 |
| Herbie | 1.2 |
if (* y 9.0) < -2.434616547682555Initial program 8.2
rmApplied associate-*l*8.1
rmApplied associate-*l*0.7
if -2.434616547682555 < (* y 9.0) < 1.2457175519898698e-192Initial program 0.7
rmApplied associate-*l*0.8
rmApplied associate-*l*6.0
rmApplied sub-neg6.0
Applied associate-+l+6.0
Simplified0.6
if 1.2457175519898698e-192 < (* y 9.0) Initial program 5.1
rmApplied associate-*l*5.1
rmApplied sub-neg5.1
Applied associate-+l+5.1
Simplified2.0
rmApplied add-sqr-sqrt2.1
Applied associate-*r*2.1
Final simplification1.2
herbie shell --seed 2019172
(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)))