\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} = -\infty:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{b + x \cdot \left(9 \cdot y\right)}{z} - 4 \cdot \left(t \cdot a\right)}}\\
\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.2924559506748985 \cdot 10^{48}:\\
\;\;\;\;\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}\\
\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 5.1699103539817533 \cdot 10^{-16}:\\
\;\;\;\;\left(\frac{b + \left(x \cdot 9\right) \cdot y}{z} - 4 \cdot \left(t \cdot a\right)\right) \cdot \frac{1}{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 2.03198024949057577 \cdot 10^{301}:\\
\;\;\;\;\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}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{b + x \cdot \left(9 \cdot y\right)}{z} - 4 \cdot \left(t \cdot a\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r886958 = x;
double r886959 = 9.0;
double r886960 = r886958 * r886959;
double r886961 = y;
double r886962 = r886960 * r886961;
double r886963 = z;
double r886964 = 4.0;
double r886965 = r886963 * r886964;
double r886966 = t;
double r886967 = r886965 * r886966;
double r886968 = a;
double r886969 = r886967 * r886968;
double r886970 = r886962 - r886969;
double r886971 = b;
double r886972 = r886970 + r886971;
double r886973 = c;
double r886974 = r886963 * r886973;
double r886975 = r886972 / r886974;
return r886975;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r886976 = x;
double r886977 = 9.0;
double r886978 = r886976 * r886977;
double r886979 = y;
double r886980 = r886978 * r886979;
double r886981 = z;
double r886982 = 4.0;
double r886983 = r886981 * r886982;
double r886984 = t;
double r886985 = r886983 * r886984;
double r886986 = a;
double r886987 = r886985 * r886986;
double r886988 = r886980 - r886987;
double r886989 = b;
double r886990 = r886988 + r886989;
double r886991 = c;
double r886992 = r886981 * r886991;
double r886993 = r886990 / r886992;
double r886994 = -inf.0;
bool r886995 = r886993 <= r886994;
double r886996 = 1.0;
double r886997 = r886977 * r886979;
double r886998 = r886976 * r886997;
double r886999 = r886989 + r886998;
double r887000 = r886999 / r886981;
double r887001 = r886984 * r886986;
double r887002 = r886982 * r887001;
double r887003 = r887000 - r887002;
double r887004 = r886991 / r887003;
double r887005 = r886996 / r887004;
double r887006 = -1.2924559506748985e+48;
bool r887007 = r886993 <= r887006;
double r887008 = 5.169910353981753e-16;
bool r887009 = r886993 <= r887008;
double r887010 = r886989 + r886980;
double r887011 = r887010 / r886981;
double r887012 = r887011 - r887002;
double r887013 = r886996 / r886991;
double r887014 = r887012 * r887013;
double r887015 = 2.0319802494905758e+301;
bool r887016 = r886993 <= r887015;
double r887017 = r887016 ? r886993 : r887005;
double r887018 = r887009 ? r887014 : r887017;
double r887019 = r887007 ? r886993 : r887018;
double r887020 = r886995 ? r887005 : r887019;
return r887020;
}




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.7 |
|---|---|
| Target | 15.2 |
| Herbie | 7.7 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0 or 2.0319802494905758e+301 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 63.0
Simplified27.6
rmApplied associate-*l*27.5
rmApplied clear-num27.6
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -1.2924559506748985e+48 or 5.169910353981753e-16 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.0319802494905758e+301Initial program 0.6
if -1.2924559506748985e+48 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 5.169910353981753e-16Initial program 13.0
Simplified1.0
rmApplied div-inv1.1
Final simplification7.7
herbie shell --seed 2020046
(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)))