\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\mathsf{fma}\left(t, \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right) \cdot \sqrt[3]{z} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, j \cdot \left(27 \cdot k\right)\right)\right)double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r736901 = x;
double r736902 = 18.0;
double r736903 = r736901 * r736902;
double r736904 = y;
double r736905 = r736903 * r736904;
double r736906 = z;
double r736907 = r736905 * r736906;
double r736908 = t;
double r736909 = r736907 * r736908;
double r736910 = a;
double r736911 = 4.0;
double r736912 = r736910 * r736911;
double r736913 = r736912 * r736908;
double r736914 = r736909 - r736913;
double r736915 = b;
double r736916 = c;
double r736917 = r736915 * r736916;
double r736918 = r736914 + r736917;
double r736919 = r736901 * r736911;
double r736920 = i;
double r736921 = r736919 * r736920;
double r736922 = r736918 - r736921;
double r736923 = j;
double r736924 = 27.0;
double r736925 = r736923 * r736924;
double r736926 = k;
double r736927 = r736925 * r736926;
double r736928 = r736922 - r736927;
return r736928;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r736929 = t;
double r736930 = x;
double r736931 = 18.0;
double r736932 = r736930 * r736931;
double r736933 = y;
double r736934 = r736932 * r736933;
double r736935 = z;
double r736936 = cbrt(r736935);
double r736937 = r736936 * r736936;
double r736938 = r736934 * r736937;
double r736939 = r736938 * r736936;
double r736940 = a;
double r736941 = 4.0;
double r736942 = r736940 * r736941;
double r736943 = r736939 - r736942;
double r736944 = b;
double r736945 = c;
double r736946 = r736944 * r736945;
double r736947 = i;
double r736948 = r736941 * r736947;
double r736949 = j;
double r736950 = 27.0;
double r736951 = k;
double r736952 = r736950 * r736951;
double r736953 = r736949 * r736952;
double r736954 = fma(r736930, r736948, r736953);
double r736955 = r736946 - r736954;
double r736956 = fma(r736929, r736943, r736955);
return r736956;
}




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
| Original | 5.6 |
|---|---|
| Target | 1.6 |
| Herbie | 5.7 |
Initial program 5.6
Simplified5.6
rmApplied associate-*l*5.6
rmApplied add-cube-cbrt5.7
Applied associate-*r*5.7
Final simplification5.7
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:precision binary64
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))
(- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))