\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 -1.020674458090830407540978412360813821868 \cdot 10^{302}:\\
\;\;\;\;\frac{\frac{b}{z} - \left(a \cdot 4\right) \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 -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 2.49942252444617336175227318057610535812 \cdot 10^{-35}:\\
\;\;\;\;\frac{1}{c} \cdot \left(\frac{9 \cdot \left(x \cdot y\right) + b}{z} - \left(a \cdot 4\right) \cdot t\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 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{\frac{b}{z} - \left(a \cdot 4\right) \cdot t}{c}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r596605 = x;
double r596606 = 9.0;
double r596607 = r596605 * r596606;
double r596608 = y;
double r596609 = r596607 * r596608;
double r596610 = z;
double r596611 = 4.0;
double r596612 = r596610 * r596611;
double r596613 = t;
double r596614 = r596612 * r596613;
double r596615 = a;
double r596616 = r596614 * r596615;
double r596617 = r596609 - r596616;
double r596618 = b;
double r596619 = r596617 + r596618;
double r596620 = c;
double r596621 = r596610 * r596620;
double r596622 = r596619 / r596621;
return r596622;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r596623 = x;
double r596624 = 9.0;
double r596625 = r596623 * r596624;
double r596626 = y;
double r596627 = r596625 * r596626;
double r596628 = z;
double r596629 = 4.0;
double r596630 = r596628 * r596629;
double r596631 = t;
double r596632 = r596630 * r596631;
double r596633 = a;
double r596634 = r596632 * r596633;
double r596635 = r596627 - r596634;
double r596636 = b;
double r596637 = r596635 + r596636;
double r596638 = c;
double r596639 = r596628 * r596638;
double r596640 = r596637 / r596639;
double r596641 = -1.0206744580908304e+302;
bool r596642 = r596640 <= r596641;
double r596643 = r596636 / r596628;
double r596644 = r596633 * r596629;
double r596645 = r596644 * r596631;
double r596646 = r596643 - r596645;
double r596647 = r596646 / r596638;
double r596648 = -2.102451017909847e-121;
bool r596649 = r596640 <= r596648;
double r596650 = 2.4994225244461734e-35;
bool r596651 = r596640 <= r596650;
double r596652 = 1.0;
double r596653 = r596652 / r596638;
double r596654 = r596623 * r596626;
double r596655 = r596624 * r596654;
double r596656 = r596655 + r596636;
double r596657 = r596656 / r596628;
double r596658 = r596657 - r596645;
double r596659 = r596653 * r596658;
double r596660 = 9.015864611909134e+300;
bool r596661 = r596640 <= r596660;
double r596662 = r596661 ? r596640 : r596647;
double r596663 = r596651 ? r596659 : r596662;
double r596664 = r596649 ? r596640 : r596663;
double r596665 = r596642 ? r596647 : r596664;
return r596665;
}




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.5 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -1.0206744580908304e+302 or 9.015864611909134e+300 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 62.1
Simplified25.6
rmApplied clear-num25.6
Taylor expanded around 0 27.0
if -1.0206744580908304e+302 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -2.102451017909847e-121 or 2.4994225244461734e-35 < (/ (+ (- (* (* 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)) < 2.4994225244461734e-35Initial program 20.6
Simplified0.9
rmApplied div-inv1.0
rmApplied pow11.0
Applied pow11.0
Applied pow11.0
Applied pow-prod-down1.0
Applied pow-prod-down1.0
Simplified1.0
Final simplification7.5
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)))