\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 -5.5038978783466573 \cdot 10^{-5}:\\
\;\;\;\;t \cdot \left(\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\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\\
\mathbf{elif}\;z \le 1.12710979643317163 \cdot 10^{-39}:\\
\;\;\;\;\left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right) + t \cdot \left(-a \cdot 4\right)\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \sqrt{z}\right) \cdot \sqrt{z} - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\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 r738966 = x;
double r738967 = 18.0;
double r738968 = r738966 * r738967;
double r738969 = y;
double r738970 = r738968 * r738969;
double r738971 = z;
double r738972 = r738970 * r738971;
double r738973 = t;
double r738974 = r738972 * r738973;
double r738975 = a;
double r738976 = 4.0;
double r738977 = r738975 * r738976;
double r738978 = r738977 * r738973;
double r738979 = r738974 - r738978;
double r738980 = b;
double r738981 = c;
double r738982 = r738980 * r738981;
double r738983 = r738979 + r738982;
double r738984 = r738966 * r738976;
double r738985 = i;
double r738986 = r738984 * r738985;
double r738987 = r738983 - r738986;
double r738988 = j;
double r738989 = 27.0;
double r738990 = r738988 * r738989;
double r738991 = k;
double r738992 = r738990 * r738991;
double r738993 = r738987 - r738992;
return r738993;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r738994 = z;
double r738995 = -5.503897878346657e-05;
bool r738996 = r738994 <= r738995;
double r738997 = t;
double r738998 = x;
double r738999 = 18.0;
double r739000 = r738998 * r738999;
double r739001 = y;
double r739002 = r739000 * r739001;
double r739003 = cbrt(r738994);
double r739004 = r739003 * r739003;
double r739005 = r739002 * r739004;
double r739006 = r739005 * r739003;
double r739007 = a;
double r739008 = 4.0;
double r739009 = r739007 * r739008;
double r739010 = r739006 - r739009;
double r739011 = r738997 * r739010;
double r739012 = b;
double r739013 = c;
double r739014 = r739012 * r739013;
double r739015 = r738998 * r739008;
double r739016 = i;
double r739017 = r739015 * r739016;
double r739018 = j;
double r739019 = 27.0;
double r739020 = k;
double r739021 = r739019 * r739020;
double r739022 = r739018 * r739021;
double r739023 = r739017 + r739022;
double r739024 = r739014 - r739023;
double r739025 = r739011 + r739024;
double r739026 = 1.1271097964331716e-39;
bool r739027 = r738994 <= r739026;
double r739028 = r738994 * r739001;
double r739029 = r738998 * r739028;
double r739030 = r738997 * r739029;
double r739031 = r738999 * r739030;
double r739032 = -r739009;
double r739033 = r738997 * r739032;
double r739034 = r739031 + r739033;
double r739035 = r739034 + r739024;
double r739036 = sqrt(r738994);
double r739037 = r739002 * r739036;
double r739038 = r739037 * r739036;
double r739039 = r739038 - r739009;
double r739040 = r738997 * r739039;
double r739041 = r739018 * r739019;
double r739042 = r739041 * r739020;
double r739043 = r739017 + r739042;
double r739044 = r739014 - r739043;
double r739045 = r739040 + r739044;
double r739046 = r739027 ? r739035 : r739045;
double r739047 = r738996 ? r739025 : r739046;
return r739047;
}




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.7 |
if z < -5.503897878346657e-05Initial program 6.0
Simplified6.0
rmApplied associate-*l*6.0
rmApplied add-cube-cbrt6.2
Applied associate-*r*6.2
if -5.503897878346657e-05 < z < 1.1271097964331716e-39Initial program 5.0
Simplified5.0
rmApplied associate-*l*4.9
rmApplied add-cube-cbrt4.9
Applied associate-*r*4.9
rmApplied sub-neg4.9
Applied distribute-lft-in4.9
Simplified1.2
if 1.1271097964331716e-39 < z Initial program 6.5
Simplified6.5
rmApplied add-sqr-sqrt6.5
Applied associate-*r*6.5
Final simplification3.7
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)))