\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le -4.09321648350570581 \cdot 10^{287}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{\frac{z \cdot c}{y}}\right) - 4 \cdot \frac{a \cdot t}{c}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le -1.92430271794894601 \cdot 10^{-238}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le 2.14272015852647859 \cdot 10^{277}:\\
\;\;\;\;\frac{1}{z} \cdot \frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + \left(9 \cdot \frac{x}{z}\right) \cdot \frac{y}{c}\right) - 4 \cdot \frac{a \cdot t}{c}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r666848 = x;
double r666849 = 9.0;
double r666850 = r666848 * r666849;
double r666851 = y;
double r666852 = r666850 * r666851;
double r666853 = z;
double r666854 = 4.0;
double r666855 = r666853 * r666854;
double r666856 = t;
double r666857 = r666855 * r666856;
double r666858 = a;
double r666859 = r666857 * r666858;
double r666860 = r666852 - r666859;
double r666861 = b;
double r666862 = r666860 + r666861;
double r666863 = c;
double r666864 = r666853 * r666863;
double r666865 = r666862 / r666864;
return r666865;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r666866 = x;
double r666867 = 9.0;
double r666868 = r666866 * r666867;
double r666869 = y;
double r666870 = r666868 * r666869;
double r666871 = z;
double r666872 = 4.0;
double r666873 = r666871 * r666872;
double r666874 = t;
double r666875 = r666873 * r666874;
double r666876 = a;
double r666877 = r666875 * r666876;
double r666878 = r666870 - r666877;
double r666879 = b;
double r666880 = r666878 + r666879;
double r666881 = c;
double r666882 = r666871 * r666881;
double r666883 = r666880 / r666882;
double r666884 = -4.093216483505706e+287;
bool r666885 = r666883 <= r666884;
double r666886 = r666879 / r666882;
double r666887 = r666882 / r666869;
double r666888 = r666866 / r666887;
double r666889 = r666867 * r666888;
double r666890 = r666886 + r666889;
double r666891 = r666876 * r666874;
double r666892 = r666891 / r666881;
double r666893 = r666872 * r666892;
double r666894 = r666890 - r666893;
double r666895 = -1.924302717948946e-238;
bool r666896 = r666883 <= r666895;
double r666897 = r666866 * r666869;
double r666898 = r666897 / r666882;
double r666899 = r666867 * r666898;
double r666900 = r666886 + r666899;
double r666901 = r666881 / r666874;
double r666902 = r666876 / r666901;
double r666903 = r666872 * r666902;
double r666904 = r666900 - r666903;
double r666905 = 2.1427201585264786e+277;
bool r666906 = r666883 <= r666905;
double r666907 = 1.0;
double r666908 = r666907 / r666871;
double r666909 = r666880 / r666881;
double r666910 = r666908 * r666909;
double r666911 = r666866 / r666871;
double r666912 = r666867 * r666911;
double r666913 = r666869 / r666881;
double r666914 = r666912 * r666913;
double r666915 = r666886 + r666914;
double r666916 = r666915 - r666893;
double r666917 = r666906 ? r666910 : r666916;
double r666918 = r666896 ? r666904 : r666917;
double r666919 = r666885 ? r666894 : r666918;
return r666919;
}




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
Results
| Original | 20.6 |
|---|---|
| Target | 14.6 |
| Herbie | 8.0 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -4.093216483505706e+287Initial program 53.7
Taylor expanded around 0 24.1
rmApplied associate-/l*15.1
if -4.093216483505706e+287 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -1.924302717948946e-238Initial program 0.9
Taylor expanded around 0 2.5
rmApplied associate-/l*2.3
if -1.924302717948946e-238 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.1427201585264786e+277Initial program 9.9
rmApplied *-un-lft-identity9.9
Applied times-frac5.9
if 2.1427201585264786e+277 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 57.0
Taylor expanded around 0 28.4
rmApplied times-frac17.5
Applied associate-*r*17.5
Final simplification8.0
herbie shell --seed 2020020
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:precision binary64
:herbie-target
(if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -1.1001567408041051e-171) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (- (+ (* 9 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)))