\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 r577574 = x;
double r577575 = 9.0;
double r577576 = r577574 * r577575;
double r577577 = y;
double r577578 = r577576 * r577577;
double r577579 = z;
double r577580 = 4.0;
double r577581 = r577579 * r577580;
double r577582 = t;
double r577583 = r577581 * r577582;
double r577584 = a;
double r577585 = r577583 * r577584;
double r577586 = r577578 - r577585;
double r577587 = b;
double r577588 = r577586 + r577587;
double r577589 = c;
double r577590 = r577579 * r577589;
double r577591 = r577588 / r577590;
return r577591;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r577592 = x;
double r577593 = 9.0;
double r577594 = r577592 * r577593;
double r577595 = y;
double r577596 = r577594 * r577595;
double r577597 = z;
double r577598 = 4.0;
double r577599 = r577597 * r577598;
double r577600 = t;
double r577601 = r577599 * r577600;
double r577602 = a;
double r577603 = r577601 * r577602;
double r577604 = r577596 - r577603;
double r577605 = b;
double r577606 = r577604 + r577605;
double r577607 = c;
double r577608 = r577597 * r577607;
double r577609 = r577606 / r577608;
double r577610 = -inf.0;
bool r577611 = r577609 <= r577610;
double r577612 = 1.0;
double r577613 = r577593 * r577595;
double r577614 = r577592 * r577613;
double r577615 = r577605 + r577614;
double r577616 = r577615 / r577597;
double r577617 = r577600 * r577602;
double r577618 = r577598 * r577617;
double r577619 = r577616 - r577618;
double r577620 = r577607 / r577619;
double r577621 = r577612 / r577620;
double r577622 = -1.2924559506748985e+48;
bool r577623 = r577609 <= r577622;
double r577624 = 5.169910353981753e-16;
bool r577625 = r577609 <= r577624;
double r577626 = r577605 + r577596;
double r577627 = r577626 / r577597;
double r577628 = r577627 - r577618;
double r577629 = r577612 / r577607;
double r577630 = r577628 * r577629;
double r577631 = 2.0319802494905758e+301;
bool r577632 = r577609 <= r577631;
double r577633 = r577632 ? r577609 : r577621;
double r577634 = r577625 ? r577630 : r577633;
double r577635 = r577623 ? r577609 : r577634;
double r577636 = r577611 ? r577621 : r577635;
return r577636;
}




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)))