\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}\;z \le -2.9319548093872591 \cdot 10^{-9} \lor \neg \left(z \le 6.2299952706301125 \cdot 10^{117}\right):\\
\;\;\;\;\left(\frac{\frac{b}{z}}{c} + 9 \cdot \frac{x}{\frac{z \cdot c}{y}}\right) - 4 \cdot \frac{a \cdot t}{c}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r730609 = x;
double r730610 = 9.0;
double r730611 = r730609 * r730610;
double r730612 = y;
double r730613 = r730611 * r730612;
double r730614 = z;
double r730615 = 4.0;
double r730616 = r730614 * r730615;
double r730617 = t;
double r730618 = r730616 * r730617;
double r730619 = a;
double r730620 = r730618 * r730619;
double r730621 = r730613 - r730620;
double r730622 = b;
double r730623 = r730621 + r730622;
double r730624 = c;
double r730625 = r730614 * r730624;
double r730626 = r730623 / r730625;
return r730626;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r730627 = z;
double r730628 = -2.931954809387259e-09;
bool r730629 = r730627 <= r730628;
double r730630 = 6.229995270630113e+117;
bool r730631 = r730627 <= r730630;
double r730632 = !r730631;
bool r730633 = r730629 || r730632;
double r730634 = b;
double r730635 = r730634 / r730627;
double r730636 = c;
double r730637 = r730635 / r730636;
double r730638 = 9.0;
double r730639 = x;
double r730640 = r730627 * r730636;
double r730641 = y;
double r730642 = r730640 / r730641;
double r730643 = r730639 / r730642;
double r730644 = r730638 * r730643;
double r730645 = r730637 + r730644;
double r730646 = 4.0;
double r730647 = a;
double r730648 = t;
double r730649 = r730647 * r730648;
double r730650 = r730649 / r730636;
double r730651 = r730646 * r730650;
double r730652 = r730645 - r730651;
double r730653 = r730634 / r730640;
double r730654 = r730639 * r730641;
double r730655 = r730654 / r730640;
double r730656 = r730638 * r730655;
double r730657 = r730653 + r730656;
double r730658 = r730636 / r730648;
double r730659 = r730647 / r730658;
double r730660 = r730646 * r730659;
double r730661 = r730657 - r730660;
double r730662 = r730633 ? r730652 : r730661;
return r730662;
}




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.8 |
|---|---|
| Target | 14.7 |
| Herbie | 8.0 |
if z < -2.931954809387259e-09 or 6.229995270630113e+117 < z Initial program 31.8
Taylor expanded around 0 13.9
rmApplied associate-/l*11.2
rmApplied associate-/r*8.6
if -2.931954809387259e-09 < z < 6.229995270630113e+117Initial program 9.1
Taylor expanded around 0 10.0
rmApplied associate-/l*7.4
Final simplification8.0
herbie shell --seed 2020056
(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)))