\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k
\left(b \cdot c - \left(4.0 \cdot \left(i \cdot x\right) + \sqrt{27.0} \cdot \left(\left(j \cdot k\right) \cdot \sqrt{27.0}\right)\right)\right) + t \cdot \left(\left(z \cdot x\right) \cdot \left(18.0 \cdot y\right) - 4.0 \cdot a\right)double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r35533847 = x;
double r35533848 = 18.0;
double r35533849 = r35533847 * r35533848;
double r35533850 = y;
double r35533851 = r35533849 * r35533850;
double r35533852 = z;
double r35533853 = r35533851 * r35533852;
double r35533854 = t;
double r35533855 = r35533853 * r35533854;
double r35533856 = a;
double r35533857 = 4.0;
double r35533858 = r35533856 * r35533857;
double r35533859 = r35533858 * r35533854;
double r35533860 = r35533855 - r35533859;
double r35533861 = b;
double r35533862 = c;
double r35533863 = r35533861 * r35533862;
double r35533864 = r35533860 + r35533863;
double r35533865 = r35533847 * r35533857;
double r35533866 = i;
double r35533867 = r35533865 * r35533866;
double r35533868 = r35533864 - r35533867;
double r35533869 = j;
double r35533870 = 27.0;
double r35533871 = r35533869 * r35533870;
double r35533872 = k;
double r35533873 = r35533871 * r35533872;
double r35533874 = r35533868 - r35533873;
return r35533874;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r35533875 = b;
double r35533876 = c;
double r35533877 = r35533875 * r35533876;
double r35533878 = 4.0;
double r35533879 = i;
double r35533880 = x;
double r35533881 = r35533879 * r35533880;
double r35533882 = r35533878 * r35533881;
double r35533883 = 27.0;
double r35533884 = sqrt(r35533883);
double r35533885 = j;
double r35533886 = k;
double r35533887 = r35533885 * r35533886;
double r35533888 = r35533887 * r35533884;
double r35533889 = r35533884 * r35533888;
double r35533890 = r35533882 + r35533889;
double r35533891 = r35533877 - r35533890;
double r35533892 = t;
double r35533893 = z;
double r35533894 = r35533893 * r35533880;
double r35533895 = 18.0;
double r35533896 = y;
double r35533897 = r35533895 * r35533896;
double r35533898 = r35533894 * r35533897;
double r35533899 = a;
double r35533900 = r35533878 * r35533899;
double r35533901 = r35533898 - r35533900;
double r35533902 = r35533892 * r35533901;
double r35533903 = r35533891 + r35533902;
return r35533903;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i




Bits error versus j




Bits error versus k
Results
| Original | 4.9 |
|---|---|
| Target | 1.5 |
| Herbie | 4.9 |
Initial program 4.9
Simplified5.0
Taylor expanded around inf 5.8
Taylor expanded around inf 5.7
Simplified5.0
Taylor expanded around 0 4.9
rmApplied add-sqr-sqrt4.9
Applied associate-*l*4.9
Final simplification4.9
herbie shell --seed 2019158
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18.0 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4.0)) (- (* c b) (* 27.0 (* k j)))) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b)))))
(- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))