\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}\;\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 = -\infty \lor \neg \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 \le 5.8546426371867731 \cdot 10^{298}\right):\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\
\mathbf{else}:\\
\;\;\;\;\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) - 27 \cdot \left(k \cdot j\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 r939828 = x;
double r939829 = 18.0;
double r939830 = r939828 * r939829;
double r939831 = y;
double r939832 = r939830 * r939831;
double r939833 = z;
double r939834 = r939832 * r939833;
double r939835 = t;
double r939836 = r939834 * r939835;
double r939837 = a;
double r939838 = 4.0;
double r939839 = r939837 * r939838;
double r939840 = r939839 * r939835;
double r939841 = r939836 - r939840;
double r939842 = b;
double r939843 = c;
double r939844 = r939842 * r939843;
double r939845 = r939841 + r939844;
double r939846 = r939828 * r939838;
double r939847 = i;
double r939848 = r939846 * r939847;
double r939849 = r939845 - r939848;
double r939850 = j;
double r939851 = 27.0;
double r939852 = r939850 * r939851;
double r939853 = k;
double r939854 = r939852 * r939853;
double r939855 = r939849 - r939854;
return r939855;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r939856 = x;
double r939857 = 18.0;
double r939858 = r939856 * r939857;
double r939859 = y;
double r939860 = r939858 * r939859;
double r939861 = z;
double r939862 = r939860 * r939861;
double r939863 = t;
double r939864 = r939862 * r939863;
double r939865 = a;
double r939866 = 4.0;
double r939867 = r939865 * r939866;
double r939868 = r939867 * r939863;
double r939869 = r939864 - r939868;
double r939870 = b;
double r939871 = c;
double r939872 = r939870 * r939871;
double r939873 = r939869 + r939872;
double r939874 = r939856 * r939866;
double r939875 = i;
double r939876 = r939874 * r939875;
double r939877 = r939873 - r939876;
double r939878 = -inf.0;
bool r939879 = r939877 <= r939878;
double r939880 = 5.854642637186773e+298;
bool r939881 = r939877 <= r939880;
double r939882 = !r939881;
bool r939883 = r939879 || r939882;
double r939884 = r939861 * r939863;
double r939885 = r939859 * r939884;
double r939886 = r939858 * r939885;
double r939887 = r939886 - r939868;
double r939888 = r939887 + r939872;
double r939889 = r939888 - r939876;
double r939890 = j;
double r939891 = 27.0;
double r939892 = k;
double r939893 = r939891 * r939892;
double r939894 = r939890 * r939893;
double r939895 = r939889 - r939894;
double r939896 = r939892 * r939890;
double r939897 = r939891 * r939896;
double r939898 = r939877 - r939897;
double r939899 = r939883 ? r939895 : r939898;
return r939899;
}




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.5 |
| Herbie | 0.7 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0 or 5.854642637186773e+298 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 55.0
rmApplied associate-*l*30.4
rmApplied associate-*l*30.4
rmApplied associate-*l*5.3
if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 5.854642637186773e+298Initial program 0.3
Taylor expanded around 0 0.3
Final simplification0.7
herbie shell --seed 2020045 +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)))