\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}{c \cdot z} = -\infty:\\
\;\;\;\;\left(\frac{\frac{b}{c}}{z} + \frac{x \cdot 9}{\frac{c}{\frac{y}{z}}}\right) - \frac{t}{\frac{c}{a}} \cdot 4\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -48321584405561035694420036419584:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 0.0:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{b + \left(y \cdot x\right) \cdot 9}{z} - \left(t \cdot a\right) \cdot 4}}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 7.468702005485942468554359890686701640407 \cdot 10^{289}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{b}{c}}{z} + \frac{x \cdot 9}{\frac{c}{\frac{y}{z}}}\right) - \frac{t}{\frac{c}{a}} \cdot 4\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r621963 = x;
double r621964 = 9.0;
double r621965 = r621963 * r621964;
double r621966 = y;
double r621967 = r621965 * r621966;
double r621968 = z;
double r621969 = 4.0;
double r621970 = r621968 * r621969;
double r621971 = t;
double r621972 = r621970 * r621971;
double r621973 = a;
double r621974 = r621972 * r621973;
double r621975 = r621967 - r621974;
double r621976 = b;
double r621977 = r621975 + r621976;
double r621978 = c;
double r621979 = r621968 * r621978;
double r621980 = r621977 / r621979;
return r621980;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r621981 = x;
double r621982 = 9.0;
double r621983 = r621981 * r621982;
double r621984 = y;
double r621985 = r621983 * r621984;
double r621986 = z;
double r621987 = 4.0;
double r621988 = r621986 * r621987;
double r621989 = t;
double r621990 = r621988 * r621989;
double r621991 = a;
double r621992 = r621990 * r621991;
double r621993 = r621985 - r621992;
double r621994 = b;
double r621995 = r621993 + r621994;
double r621996 = c;
double r621997 = r621996 * r621986;
double r621998 = r621995 / r621997;
double r621999 = -inf.0;
bool r622000 = r621998 <= r621999;
double r622001 = r621994 / r621996;
double r622002 = r622001 / r621986;
double r622003 = r621984 / r621986;
double r622004 = r621996 / r622003;
double r622005 = r621983 / r622004;
double r622006 = r622002 + r622005;
double r622007 = r621996 / r621991;
double r622008 = r621989 / r622007;
double r622009 = r622008 * r621987;
double r622010 = r622006 - r622009;
double r622011 = -4.832158440556104e+31;
bool r622012 = r621998 <= r622011;
double r622013 = 0.0;
bool r622014 = r621998 <= r622013;
double r622015 = 1.0;
double r622016 = r621984 * r621981;
double r622017 = r622016 * r621982;
double r622018 = r621994 + r622017;
double r622019 = r622018 / r621986;
double r622020 = r621989 * r621991;
double r622021 = r622020 * r621987;
double r622022 = r622019 - r622021;
double r622023 = r621996 / r622022;
double r622024 = r622015 / r622023;
double r622025 = 7.4687020054859425e+289;
bool r622026 = r621998 <= r622025;
double r622027 = r622026 ? r621998 : r622010;
double r622028 = r622014 ? r622024 : r622027;
double r622029 = r622012 ? r621998 : r622028;
double r622030 = r622000 ? r622010 : r622029;
return r622030;
}




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.8 |
|---|---|
| Target | 14.8 |
| Herbie | 3.4 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0 or 7.4687020054859425e+289 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 61.4
Simplified26.6
rmApplied div-sub26.6
Simplified30.5
Simplified30.4
rmApplied associate-/l*24.3
Taylor expanded around 0 24.3
Simplified10.7
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -4.832158440556104e+31 or 0.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 7.4687020054859425e+289Initial program 4.4
if -4.832158440556104e+31 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 0.0Initial program 11.8
Simplified0.7
rmApplied clear-num1.0
Simplified1.0
Final simplification3.4
herbie shell --seed 2019194
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:herbie-target
(if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9.0 (/ y c)) (/ x z)) (/ b (* c z))) (* 4.0 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (- (+ (* 9.0 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4.0 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))