\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} \le -9.88584605604387315427172643975722969846 \cdot 10^{302}:\\
\;\;\;\;\frac{\frac{1}{\frac{z}{\left(x \cdot 9\right) \cdot y + b}}}{c} - \frac{t \cdot \left(a \cdot 4\right)}{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}{c \cdot z} \le -6.165302790627336852530598431195247451468 \cdot 10^{136}:\\
\;\;\;\;\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 1.325458288189529837322656396878629664913 \cdot 10^{70}:\\
\;\;\;\;\frac{\frac{y \cdot x}{z} \cdot 9 + \frac{b}{z}}{c} - \frac{t \cdot \left(a \cdot 4\right)}{c}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{z}}{c} \cdot \left(\left(x \cdot 9\right) \cdot y + b\right) - \frac{a \cdot 4}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{t}{\sqrt[3]{c}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r32335596 = x;
double r32335597 = 9.0;
double r32335598 = r32335596 * r32335597;
double r32335599 = y;
double r32335600 = r32335598 * r32335599;
double r32335601 = z;
double r32335602 = 4.0;
double r32335603 = r32335601 * r32335602;
double r32335604 = t;
double r32335605 = r32335603 * r32335604;
double r32335606 = a;
double r32335607 = r32335605 * r32335606;
double r32335608 = r32335600 - r32335607;
double r32335609 = b;
double r32335610 = r32335608 + r32335609;
double r32335611 = c;
double r32335612 = r32335601 * r32335611;
double r32335613 = r32335610 / r32335612;
return r32335613;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r32335614 = x;
double r32335615 = 9.0;
double r32335616 = r32335614 * r32335615;
double r32335617 = y;
double r32335618 = r32335616 * r32335617;
double r32335619 = z;
double r32335620 = 4.0;
double r32335621 = r32335619 * r32335620;
double r32335622 = t;
double r32335623 = r32335621 * r32335622;
double r32335624 = a;
double r32335625 = r32335623 * r32335624;
double r32335626 = r32335618 - r32335625;
double r32335627 = b;
double r32335628 = r32335626 + r32335627;
double r32335629 = c;
double r32335630 = r32335629 * r32335619;
double r32335631 = r32335628 / r32335630;
double r32335632 = -9.885846056043873e+302;
bool r32335633 = r32335631 <= r32335632;
double r32335634 = 1.0;
double r32335635 = r32335618 + r32335627;
double r32335636 = r32335619 / r32335635;
double r32335637 = r32335634 / r32335636;
double r32335638 = r32335637 / r32335629;
double r32335639 = r32335624 * r32335620;
double r32335640 = r32335622 * r32335639;
double r32335641 = r32335640 / r32335629;
double r32335642 = r32335638 - r32335641;
double r32335643 = -6.165302790627337e+136;
bool r32335644 = r32335631 <= r32335643;
double r32335645 = 1.3254582881895298e+70;
bool r32335646 = r32335631 <= r32335645;
double r32335647 = r32335617 * r32335614;
double r32335648 = r32335647 / r32335619;
double r32335649 = r32335648 * r32335615;
double r32335650 = r32335627 / r32335619;
double r32335651 = r32335649 + r32335650;
double r32335652 = r32335651 / r32335629;
double r32335653 = r32335652 - r32335641;
double r32335654 = r32335634 / r32335619;
double r32335655 = r32335654 / r32335629;
double r32335656 = r32335655 * r32335635;
double r32335657 = cbrt(r32335629);
double r32335658 = r32335657 * r32335657;
double r32335659 = r32335639 / r32335658;
double r32335660 = r32335622 / r32335657;
double r32335661 = r32335659 * r32335660;
double r32335662 = r32335656 - r32335661;
double r32335663 = r32335646 ? r32335653 : r32335662;
double r32335664 = r32335644 ? r32335631 : r32335663;
double r32335665 = r32335633 ? r32335642 : r32335664;
return r32335665;
}




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.2 |
|---|---|
| Target | 14.7 |
| Herbie | 8.3 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -9.885846056043873e+302Initial program 61.9
Simplified22.6
rmApplied div-sub22.6
rmApplied clear-num22.6
if -9.885846056043873e+302 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -6.165302790627337e+136Initial program 0.4
if -6.165302790627337e+136 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.3254582881895298e+70Initial program 9.7
Simplified2.9
rmApplied div-sub2.9
Taylor expanded around 0 2.9
if 1.3254582881895298e+70 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 31.8
Simplified21.8
rmApplied div-sub21.8
rmApplied add-cube-cbrt22.1
Applied times-frac20.3
rmApplied *-un-lft-identity20.3
Applied div-inv20.3
Applied times-frac15.0
Simplified15.0
Final simplification8.3
herbie shell --seed 2019192
(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)))