\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{\mathsf{fma}\left(y, x \cdot 9, b\right)}{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 -53766755207279263744:\\
\;\;\;\;\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 7.679179221396538882840418363843709932738 \cdot 10^{-229}:\\
\;\;\;\;\frac{\frac{1}{\frac{z}{\mathsf{fma}\left(y, x \cdot 9, b\right)}} - \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.315008419706160971974416029817300469089 \cdot 10^{297}:\\
\;\;\;\;\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}:\\
\;\;\;\;\left(\frac{\mathsf{fma}\left(y, x \cdot 9, b\right)}{z} - \left(a \cdot 4\right) \cdot t\right) \cdot \frac{1}{c}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r570415 = x;
double r570416 = 9.0;
double r570417 = r570415 * r570416;
double r570418 = y;
double r570419 = r570417 * r570418;
double r570420 = z;
double r570421 = 4.0;
double r570422 = r570420 * r570421;
double r570423 = t;
double r570424 = r570422 * r570423;
double r570425 = a;
double r570426 = r570424 * r570425;
double r570427 = r570419 - r570426;
double r570428 = b;
double r570429 = r570427 + r570428;
double r570430 = c;
double r570431 = r570420 * r570430;
double r570432 = r570429 / r570431;
return r570432;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r570433 = x;
double r570434 = 9.0;
double r570435 = r570433 * r570434;
double r570436 = y;
double r570437 = r570435 * r570436;
double r570438 = z;
double r570439 = 4.0;
double r570440 = r570438 * r570439;
double r570441 = t;
double r570442 = r570440 * r570441;
double r570443 = a;
double r570444 = r570442 * r570443;
double r570445 = r570437 - r570444;
double r570446 = b;
double r570447 = r570445 + r570446;
double r570448 = c;
double r570449 = r570438 * r570448;
double r570450 = r570447 / r570449;
double r570451 = -inf.0;
bool r570452 = r570450 <= r570451;
double r570453 = fma(r570436, r570435, r570446);
double r570454 = r570453 / r570438;
double r570455 = r570443 * r570439;
double r570456 = r570455 * r570441;
double r570457 = r570454 - r570456;
double r570458 = 1.0;
double r570459 = r570458 / r570448;
double r570460 = r570457 * r570459;
double r570461 = -5.376675520727926e+19;
bool r570462 = r570450 <= r570461;
double r570463 = 7.679179221396539e-229;
bool r570464 = r570450 <= r570463;
double r570465 = r570438 / r570453;
double r570466 = r570458 / r570465;
double r570467 = r570466 - r570456;
double r570468 = r570467 / r570448;
double r570469 = 2.315008419706161e+297;
bool r570470 = r570450 <= r570469;
double r570471 = r570470 ? r570450 : r570460;
double r570472 = r570464 ? r570468 : r570471;
double r570473 = r570462 ? r570450 : r570472;
double r570474 = r570452 ? r570460 : r570473;
return r570474;
}




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
| Original | 20.5 |
|---|---|
| Target | 14.6 |
| Herbie | 7.4 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0 or 2.315008419706161e+297 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 61.6
Simplified26.0
rmApplied div-inv26.0
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -5.376675520727926e+19 or 7.679179221396539e-229 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.315008419706161e+297Initial program 0.6
if -5.376675520727926e+19 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 7.679179221396539e-229Initial program 17.6
Simplified1.0
rmApplied clear-num1.1
Final simplification7.4
herbie shell --seed 2019325 +o rules:numerics
(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)))