\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}\;\left(x \cdot 9\right) \cdot y \le -1.07259742585831686 \cdot 10^{192}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \left(\frac{x}{z} \cdot \frac{y}{c}\right)\right) - 4 \cdot \left(\frac{a}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{t}{\sqrt[3]{c}}\right)\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le -1.85155038842901986 \cdot 10^{-269}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \left(a \cdot \frac{t}{c}\right)\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le 1.8069570257286407 \cdot 10^{-259}:\\
\;\;\;\;\left(\frac{b + \left(x \cdot 9\right) \cdot y}{z} - 4 \cdot \left(t \cdot a\right)\right) \cdot \frac{1}{c}\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le 1.9905307423898903 \cdot 10^{-159}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{c \cdot \frac{z}{y}}\right) - 4 \cdot \left(\frac{a}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{t}{\sqrt[3]{c}}\right)\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le 1.33211823861849885 \cdot 10^{145}:\\
\;\;\;\;\left(\frac{1}{z} \cdot \frac{b}{c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \frac{a \cdot t}{c}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \left(\frac{x}{z} \cdot \frac{y}{c}\right)\right) - 4 \cdot \left(\frac{a}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{t}{\sqrt[3]{c}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r637452 = x;
double r637453 = 9.0;
double r637454 = r637452 * r637453;
double r637455 = y;
double r637456 = r637454 * r637455;
double r637457 = z;
double r637458 = 4.0;
double r637459 = r637457 * r637458;
double r637460 = t;
double r637461 = r637459 * r637460;
double r637462 = a;
double r637463 = r637461 * r637462;
double r637464 = r637456 - r637463;
double r637465 = b;
double r637466 = r637464 + r637465;
double r637467 = c;
double r637468 = r637457 * r637467;
double r637469 = r637466 / r637468;
return r637469;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r637470 = x;
double r637471 = 9.0;
double r637472 = r637470 * r637471;
double r637473 = y;
double r637474 = r637472 * r637473;
double r637475 = -1.0725974258583169e+192;
bool r637476 = r637474 <= r637475;
double r637477 = b;
double r637478 = z;
double r637479 = c;
double r637480 = r637478 * r637479;
double r637481 = r637477 / r637480;
double r637482 = r637470 / r637478;
double r637483 = r637473 / r637479;
double r637484 = r637482 * r637483;
double r637485 = r637471 * r637484;
double r637486 = r637481 + r637485;
double r637487 = 4.0;
double r637488 = a;
double r637489 = cbrt(r637479);
double r637490 = r637489 * r637489;
double r637491 = r637488 / r637490;
double r637492 = t;
double r637493 = r637492 / r637489;
double r637494 = r637491 * r637493;
double r637495 = r637487 * r637494;
double r637496 = r637486 - r637495;
double r637497 = -1.85155038842902e-269;
bool r637498 = r637474 <= r637497;
double r637499 = r637470 * r637473;
double r637500 = r637499 / r637480;
double r637501 = r637471 * r637500;
double r637502 = r637481 + r637501;
double r637503 = r637492 / r637479;
double r637504 = r637488 * r637503;
double r637505 = r637487 * r637504;
double r637506 = r637502 - r637505;
double r637507 = 1.8069570257286407e-259;
bool r637508 = r637474 <= r637507;
double r637509 = r637477 + r637474;
double r637510 = r637509 / r637478;
double r637511 = r637492 * r637488;
double r637512 = r637487 * r637511;
double r637513 = r637510 - r637512;
double r637514 = 1.0;
double r637515 = r637514 / r637479;
double r637516 = r637513 * r637515;
double r637517 = 1.9905307423898903e-159;
bool r637518 = r637474 <= r637517;
double r637519 = r637478 / r637473;
double r637520 = r637479 * r637519;
double r637521 = r637470 / r637520;
double r637522 = r637471 * r637521;
double r637523 = r637481 + r637522;
double r637524 = r637523 - r637495;
double r637525 = 1.3321182386184989e+145;
bool r637526 = r637474 <= r637525;
double r637527 = r637514 / r637478;
double r637528 = r637477 / r637479;
double r637529 = r637527 * r637528;
double r637530 = r637529 + r637501;
double r637531 = r637488 * r637492;
double r637532 = r637531 / r637479;
double r637533 = r637487 * r637532;
double r637534 = r637530 - r637533;
double r637535 = r637526 ? r637534 : r637496;
double r637536 = r637518 ? r637524 : r637535;
double r637537 = r637508 ? r637516 : r637536;
double r637538 = r637498 ? r637506 : r637537;
double r637539 = r637476 ? r637496 : r637538;
return r637539;
}




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 | 19.9 |
|---|---|
| Target | 14.4 |
| Herbie | 7.9 |
if (* (* x 9.0) y) < -1.0725974258583169e+192 or 1.3321182386184989e+145 < (* (* x 9.0) y) Initial program 36.4
Simplified34.7
Taylor expanded around 0 31.0
rmApplied add-cube-cbrt31.1
Applied times-frac29.1
rmApplied times-frac11.8
if -1.0725974258583169e+192 < (* (* x 9.0) y) < -1.85155038842902e-269Initial program 14.9
Simplified9.1
Taylor expanded around 0 7.2
rmApplied *-un-lft-identity7.2
Applied times-frac6.7
Simplified6.7
if -1.85155038842902e-269 < (* (* x 9.0) y) < 1.8069570257286407e-259Initial program 18.4
Simplified7.4
rmApplied div-inv7.5
if 1.8069570257286407e-259 < (* (* x 9.0) y) < 1.9905307423898903e-159Initial program 15.5
Simplified8.0
Taylor expanded around 0 7.5
rmApplied add-cube-cbrt7.9
Applied times-frac6.9
rmApplied associate-/l*7.3
Simplified7.5
if 1.9905307423898903e-159 < (* (* x 9.0) y) < 1.3321182386184989e+145Initial program 16.3
Simplified8.8
Taylor expanded around 0 6.3
rmApplied *-un-lft-identity6.3
Applied times-frac7.0
Final simplification7.9
herbie shell --seed 2020045
(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)))