\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:\\
\;\;\;\;\left(\frac{b + \left(x \cdot 9\right) \cdot y}{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 -66822341220707467817254601621504:\\
\;\;\;\;\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 3.418447849634938614215250112165796864162 \cdot 10^{-57}:\\
\;\;\;\;\frac{\left(b + \left(x \cdot 9\right) \cdot y\right) \cdot \frac{1}{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 6.077745527002132601131494112606614000821 \cdot 10^{298}:\\
\;\;\;\;\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 r488595 = x;
double r488596 = 9.0;
double r488597 = r488595 * r488596;
double r488598 = y;
double r488599 = r488597 * r488598;
double r488600 = z;
double r488601 = 4.0;
double r488602 = r488600 * r488601;
double r488603 = t;
double r488604 = r488602 * r488603;
double r488605 = a;
double r488606 = r488604 * r488605;
double r488607 = r488599 - r488606;
double r488608 = b;
double r488609 = r488607 + r488608;
double r488610 = c;
double r488611 = r488600 * r488610;
double r488612 = r488609 / r488611;
return r488612;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r488613 = x;
double r488614 = 9.0;
double r488615 = r488613 * r488614;
double r488616 = y;
double r488617 = r488615 * r488616;
double r488618 = z;
double r488619 = 4.0;
double r488620 = r488618 * r488619;
double r488621 = t;
double r488622 = r488620 * r488621;
double r488623 = a;
double r488624 = r488622 * r488623;
double r488625 = r488617 - r488624;
double r488626 = b;
double r488627 = r488625 + r488626;
double r488628 = c;
double r488629 = r488618 * r488628;
double r488630 = r488627 / r488629;
double r488631 = -inf.0;
bool r488632 = r488630 <= r488631;
double r488633 = r488626 + r488617;
double r488634 = r488633 / r488618;
double r488635 = r488623 * r488619;
double r488636 = r488635 * r488621;
double r488637 = r488634 - r488636;
double r488638 = 1.0;
double r488639 = r488638 / r488628;
double r488640 = r488637 * r488639;
double r488641 = -6.682234122070747e+31;
bool r488642 = r488630 <= r488641;
double r488643 = 3.4184478496349386e-57;
bool r488644 = r488630 <= r488643;
double r488645 = r488638 / r488618;
double r488646 = r488633 * r488645;
double r488647 = r488646 - r488636;
double r488648 = r488647 / r488628;
double r488649 = 6.077745527002133e+298;
bool r488650 = r488630 <= r488649;
double r488651 = r488626 / r488618;
double r488652 = r488651 - r488636;
double r488653 = r488652 / r488628;
double r488654 = r488650 ? r488630 : r488653;
double r488655 = r488644 ? r488648 : r488654;
double r488656 = r488642 ? r488630 : r488655;
double r488657 = r488632 ? r488640 : r488656;
return r488657;
}




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.5 |
|---|---|
| Target | 14.6 |
| Herbie | 7.5 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0Initial program 64.0
Simplified24.0
rmApplied div-inv24.1
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -6.682234122070747e+31 or 3.4184478496349386e-57 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 6.077745527002133e+298Initial program 0.6
if -6.682234122070747e+31 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 3.4184478496349386e-57Initial program 14.0
Simplified1.0
rmApplied div-inv1.1
if 6.077745527002133e+298 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 61.2
Simplified26.8
rmApplied clear-num26.8
Taylor expanded around 0 27.7
Final simplification7.5
herbie shell --seed 2019325
(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)))