\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 + \left(x \cdot 9\right) \cdot y}{z} - \left(a \cdot 4\right) \cdot 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.102451017909847122514360410827302725451 \cdot 10^{-121}:\\
\;\;\;\;\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 7.08402922927389750447758821367755364029 \cdot 10^{-57}:\\
\;\;\;\;\left(\left(b + \left(x \cdot 9\right) \cdot y\right) \cdot \frac{1}{z} - \left(a \cdot 4\right) \cdot t\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 9.015864611909133506028130612168974390184 \cdot 10^{300}:\\
\;\;\;\;\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 + \left(x \cdot 9\right) \cdot y}{z} - \left(a \cdot 4\right) \cdot t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r545684 = x;
double r545685 = 9.0;
double r545686 = r545684 * r545685;
double r545687 = y;
double r545688 = r545686 * r545687;
double r545689 = z;
double r545690 = 4.0;
double r545691 = r545689 * r545690;
double r545692 = t;
double r545693 = r545691 * r545692;
double r545694 = a;
double r545695 = r545693 * r545694;
double r545696 = r545688 - r545695;
double r545697 = b;
double r545698 = r545696 + r545697;
double r545699 = c;
double r545700 = r545689 * r545699;
double r545701 = r545698 / r545700;
return r545701;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r545702 = x;
double r545703 = 9.0;
double r545704 = r545702 * r545703;
double r545705 = y;
double r545706 = r545704 * r545705;
double r545707 = z;
double r545708 = 4.0;
double r545709 = r545707 * r545708;
double r545710 = t;
double r545711 = r545709 * r545710;
double r545712 = a;
double r545713 = r545711 * r545712;
double r545714 = r545706 - r545713;
double r545715 = b;
double r545716 = r545714 + r545715;
double r545717 = c;
double r545718 = r545707 * r545717;
double r545719 = r545716 / r545718;
double r545720 = -inf.0;
bool r545721 = r545719 <= r545720;
double r545722 = 1.0;
double r545723 = r545715 + r545706;
double r545724 = r545723 / r545707;
double r545725 = r545712 * r545708;
double r545726 = r545725 * r545710;
double r545727 = r545724 - r545726;
double r545728 = r545717 / r545727;
double r545729 = r545722 / r545728;
double r545730 = -2.102451017909847e-121;
bool r545731 = r545719 <= r545730;
double r545732 = 7.084029229273898e-57;
bool r545733 = r545719 <= r545732;
double r545734 = r545722 / r545707;
double r545735 = r545723 * r545734;
double r545736 = r545735 - r545726;
double r545737 = r545722 / r545717;
double r545738 = r545736 * r545737;
double r545739 = 9.015864611909134e+300;
bool r545740 = r545719 <= r545739;
double r545741 = r545740 ? r545719 : r545729;
double r545742 = r545733 ? r545738 : r545741;
double r545743 = r545731 ? r545719 : r545742;
double r545744 = r545721 ? r545729 : r545743;
return r545744;
}




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 | 14.6 |
| Herbie | 7.1 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0 or 9.015864611909134e+300 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 62.8
Simplified25.6
rmApplied clear-num25.8
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -2.102451017909847e-121 or 7.084029229273898e-57 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 9.015864611909134e+300Initial program 0.7
if -2.102451017909847e-121 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 7.084029229273898e-57Initial program 21.6
Simplified0.9
rmApplied div-inv1.0
rmApplied div-inv1.0
Final simplification7.1
herbie shell --seed 2019323
(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.100156740804105e-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)))