\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 -5.602555203160424923167523792835860188698 \cdot 10^{206} \lor \left(z \le -2017164749410712516555968178703810166784 \lor \neg \left(z \le 1.155843648897636062458564271484047200646 \cdot 10^{99}\right)\right):\\
\;\;\;\;\left(\frac{\frac{b}{z}}{c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \left(a \cdot \frac{t}{c}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c}}{z}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r564466 = x;
double r564467 = 9.0;
double r564468 = r564466 * r564467;
double r564469 = y;
double r564470 = r564468 * r564469;
double r564471 = z;
double r564472 = 4.0;
double r564473 = r564471 * r564472;
double r564474 = t;
double r564475 = r564473 * r564474;
double r564476 = a;
double r564477 = r564475 * r564476;
double r564478 = r564470 - r564477;
double r564479 = b;
double r564480 = r564478 + r564479;
double r564481 = c;
double r564482 = r564471 * r564481;
double r564483 = r564480 / r564482;
return r564483;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r564484 = z;
double r564485 = -5.602555203160425e+206;
bool r564486 = r564484 <= r564485;
double r564487 = -2.0171647494107125e+39;
bool r564488 = r564484 <= r564487;
double r564489 = 1.155843648897636e+99;
bool r564490 = r564484 <= r564489;
double r564491 = !r564490;
bool r564492 = r564488 || r564491;
bool r564493 = r564486 || r564492;
double r564494 = b;
double r564495 = r564494 / r564484;
double r564496 = c;
double r564497 = r564495 / r564496;
double r564498 = 9.0;
double r564499 = x;
double r564500 = y;
double r564501 = r564499 * r564500;
double r564502 = r564484 * r564496;
double r564503 = r564501 / r564502;
double r564504 = r564498 * r564503;
double r564505 = r564497 + r564504;
double r564506 = 4.0;
double r564507 = a;
double r564508 = t;
double r564509 = r564508 / r564496;
double r564510 = r564507 * r564509;
double r564511 = r564506 * r564510;
double r564512 = r564505 - r564511;
double r564513 = r564499 * r564498;
double r564514 = r564513 * r564500;
double r564515 = r564484 * r564506;
double r564516 = r564515 * r564508;
double r564517 = r564516 * r564507;
double r564518 = r564514 - r564517;
double r564519 = r564518 + r564494;
double r564520 = r564519 / r564496;
double r564521 = r564520 / r564484;
double r564522 = r564493 ? r564512 : r564521;
return r564522;
}




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.7 |
| Herbie | 10.9 |
if z < -5.602555203160425e+206Initial program 41.0
Taylor expanded around 0 14.5
rmApplied times-frac10.9
Applied associate-*r*10.9
if -5.602555203160425e+206 < z < -2.0171647494107125e+39Initial program 25.7
Taylor expanded around 0 13.4
rmApplied associate-/l*14.4
rmApplied div-inv14.4
Applied associate-/r*14.7
if -2.0171647494107125e+39 < z < 1.155843648897636e+99Initial program 8.7
rmApplied *-un-lft-identity8.7
Applied times-frac9.1
if 1.155843648897636e+99 < z Initial program 35.0
Taylor expanded around 0 13.6
rmApplied *-un-lft-identity13.6
Applied times-frac15.5
Simplified15.5
rmApplied associate-/r*12.9
Final simplification10.9
herbie shell --seed 2019298
(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.1001567408041049e-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.17088779117474882e-53) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 2.8768236795461372e130) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.3838515042456319e158) (/ (+ (- (* (* 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)))