\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}\;x \le -3.852801213810551454306858851667836070232 \cdot 10^{-73}:\\
\;\;\;\;\left(\left(b \cdot c + \left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right) - 4 \cdot \left(t \cdot a\right)\right)\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\
\mathbf{elif}\;x \le 55609495143115152:\\
\;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - 4 \cdot \left(t \cdot a\right)\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(k \cdot j\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - 4 \cdot \left(t \cdot a\right)\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \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 r496851 = x;
double r496852 = 18.0;
double r496853 = r496851 * r496852;
double r496854 = y;
double r496855 = r496853 * r496854;
double r496856 = z;
double r496857 = r496855 * r496856;
double r496858 = t;
double r496859 = r496857 * r496858;
double r496860 = a;
double r496861 = 4.0;
double r496862 = r496860 * r496861;
double r496863 = r496862 * r496858;
double r496864 = r496859 - r496863;
double r496865 = b;
double r496866 = c;
double r496867 = r496865 * r496866;
double r496868 = r496864 + r496867;
double r496869 = r496851 * r496861;
double r496870 = i;
double r496871 = r496869 * r496870;
double r496872 = r496868 - r496871;
double r496873 = j;
double r496874 = 27.0;
double r496875 = r496873 * r496874;
double r496876 = k;
double r496877 = r496875 * r496876;
double r496878 = r496872 - r496877;
return r496878;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r496879 = x;
double r496880 = -3.8528012138105515e-73;
bool r496881 = r496879 <= r496880;
double r496882 = b;
double r496883 = c;
double r496884 = r496882 * r496883;
double r496885 = 18.0;
double r496886 = t;
double r496887 = z;
double r496888 = y;
double r496889 = r496887 * r496888;
double r496890 = r496879 * r496889;
double r496891 = r496886 * r496890;
double r496892 = r496885 * r496891;
double r496893 = 4.0;
double r496894 = a;
double r496895 = r496886 * r496894;
double r496896 = r496893 * r496895;
double r496897 = r496892 - r496896;
double r496898 = r496884 + r496897;
double r496899 = r496879 * r496893;
double r496900 = i;
double r496901 = r496899 * r496900;
double r496902 = r496898 - r496901;
double r496903 = j;
double r496904 = 27.0;
double r496905 = k;
double r496906 = r496904 * r496905;
double r496907 = r496903 * r496906;
double r496908 = r496902 - r496907;
double r496909 = 5.560949514311515e+16;
bool r496910 = r496879 <= r496909;
double r496911 = r496879 * r496885;
double r496912 = r496911 * r496888;
double r496913 = r496912 * r496887;
double r496914 = r496913 * r496886;
double r496915 = r496914 - r496896;
double r496916 = r496915 + r496884;
double r496917 = r496916 - r496901;
double r496918 = r496905 * r496903;
double r496919 = r496904 * r496918;
double r496920 = r496917 - r496919;
double r496921 = r496887 * r496886;
double r496922 = r496912 * r496921;
double r496923 = r496922 - r496896;
double r496924 = r496923 + r496884;
double r496925 = r496924 - r496901;
double r496926 = r496925 - r496907;
double r496927 = r496910 ? r496920 : r496926;
double r496928 = r496881 ? r496908 : r496927;
return r496928;
}




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.3 |
|---|---|
| Target | 1.6 |
| Herbie | 3.8 |
if x < -3.8528012138105515e-73Initial program 9.4
rmApplied associate-*l*9.3
rmApplied pow19.3
Applied pow19.3
Applied pow19.3
Applied pow-prod-down9.3
Applied pow-prod-down9.3
Simplified9.3
Taylor expanded around inf 6.2
if -3.8528012138105515e-73 < x < 5.560949514311515e+16Initial program 1.4
rmApplied associate-*l*1.4
rmApplied pow11.4
Applied pow11.4
Applied pow11.4
Applied pow-prod-down1.4
Applied pow-prod-down1.4
Simplified1.3
rmApplied *-un-lft-identity1.3
Applied associate-*l*1.3
Simplified1.3
if 5.560949514311515e+16 < x Initial program 12.5
rmApplied associate-*l*12.4
rmApplied pow112.4
Applied pow112.4
Applied pow112.4
Applied pow-prod-down12.4
Applied pow-prod-down12.4
Simplified12.4
rmApplied associate-*l*8.9
Final simplification3.8
herbie shell --seed 2019304
(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.680279438052224) (+ (- (* (* 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)))