\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
\begin{array}{l}
\mathbf{if}\;z \le -7.2131406689924034 \cdot 10^{45}:\\
\;\;\;\;\left(\left({\left(\sqrt[3]{\sqrt[3]{z}}\right)}^{3} \cdot \left(t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right)\right) + \left(-a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\\
\mathbf{elif}\;z \le 1.86064292666481138 \cdot 10^{-39}:\\
\;\;\;\;\left(\left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right) + t \cdot \left(-a \cdot 4\right)\right) + b \cdot c\right) - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \sqrt{z}\right) \cdot \sqrt{z} - a \cdot 4\right) + b \cdot c\right) - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r865938 = x;
double r865939 = 18.0;
double r865940 = r865938 * r865939;
double r865941 = y;
double r865942 = r865940 * r865941;
double r865943 = z;
double r865944 = r865942 * r865943;
double r865945 = t;
double r865946 = r865944 * r865945;
double r865947 = a;
double r865948 = 4.0;
double r865949 = r865947 * r865948;
double r865950 = r865949 * r865945;
double r865951 = r865946 - r865950;
double r865952 = b;
double r865953 = c;
double r865954 = r865952 * r865953;
double r865955 = r865951 + r865954;
double r865956 = r865938 * r865948;
double r865957 = i;
double r865958 = r865956 * r865957;
double r865959 = r865955 - r865958;
double r865960 = j;
double r865961 = 27.0;
double r865962 = r865960 * r865961;
double r865963 = k;
double r865964 = r865962 * r865963;
double r865965 = r865959 - r865964;
return r865965;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r865966 = z;
double r865967 = -7.213140668992403e+45;
bool r865968 = r865966 <= r865967;
double r865969 = cbrt(r865966);
double r865970 = cbrt(r865969);
double r865971 = 3.0;
double r865972 = pow(r865970, r865971);
double r865973 = t;
double r865974 = x;
double r865975 = 18.0;
double r865976 = r865974 * r865975;
double r865977 = y;
double r865978 = r865976 * r865977;
double r865979 = r865969 * r865969;
double r865980 = r865978 * r865979;
double r865981 = r865973 * r865980;
double r865982 = r865972 * r865981;
double r865983 = a;
double r865984 = 4.0;
double r865985 = r865983 * r865984;
double r865986 = -r865985;
double r865987 = r865986 * r865973;
double r865988 = r865982 + r865987;
double r865989 = b;
double r865990 = c;
double r865991 = r865989 * r865990;
double r865992 = r865988 + r865991;
double r865993 = r865974 * r865984;
double r865994 = i;
double r865995 = r865993 * r865994;
double r865996 = j;
double r865997 = 27.0;
double r865998 = k;
double r865999 = r865997 * r865998;
double r866000 = r865996 * r865999;
double r866001 = r865995 + r866000;
double r866002 = r865992 - r866001;
double r866003 = 1.8606429266648114e-39;
bool r866004 = r865966 <= r866003;
double r866005 = r865966 * r865977;
double r866006 = r865974 * r866005;
double r866007 = r865973 * r866006;
double r866008 = r865975 * r866007;
double r866009 = r865973 * r865986;
double r866010 = r866008 + r866009;
double r866011 = r866010 + r865991;
double r866012 = r866011 - r866001;
double r866013 = sqrt(r865966);
double r866014 = r865978 * r866013;
double r866015 = r866014 * r866013;
double r866016 = r866015 - r865985;
double r866017 = r865973 * r866016;
double r866018 = r866017 + r865991;
double r866019 = r865996 * r865997;
double r866020 = r866019 * r865998;
double r866021 = r865995 + r866020;
double r866022 = r866018 - r866021;
double r866023 = r866004 ? r866012 : r866022;
double r866024 = r865968 ? r866002 : r866023;
return r866024;
}




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 | 5.6 |
|---|---|
| Target | 1.6 |
| Herbie | 3.2 |
if z < -7.213140668992403e+45Initial program 6.6
Simplified6.6
rmApplied associate-*l*6.5
rmApplied add-cube-cbrt6.7
Applied associate-*r*6.7
rmApplied add-cube-cbrt6.8
rmApplied sub-neg6.8
Applied distribute-lft-in6.8
Simplified3.9
Simplified3.9
if -7.213140668992403e+45 < z < 1.8606429266648114e-39Initial program 4.9
Simplified4.9
rmApplied associate-*l*4.8
rmApplied sub-neg4.8
Applied distribute-lft-in4.8
Simplified1.4
if 1.8606429266648114e-39 < z Initial program 6.5
Simplified6.5
rmApplied add-sqr-sqrt6.5
Applied associate-*r*6.5
Final simplification3.2
herbie shell --seed 2020046
(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)))