\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 -7.169587714961531472534492831676192257356 \cdot 10^{216}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \left(\frac{x}{z} \cdot \frac{y}{c}\right) \cdot 9\right) - 4 \cdot \frac{t}{\frac{c}{a}}\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le -1272864.31622410751879215240478515625:\\
\;\;\;\;\left(9 \cdot \frac{y \cdot x}{c \cdot z} + \frac{\sqrt[3]{b} \cdot \sqrt[3]{b}}{z} \cdot \frac{\sqrt[3]{b}}{c}\right) - \left(t \cdot \frac{a}{c}\right) \cdot 4\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le -1.307634149043525719112723879745698901365 \cdot 10^{-232}:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{\left(x \cdot 9\right) \cdot y + b}{z} - \left(4 \cdot a\right) \cdot t}}\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le 2.692076446767464273891980102672595792998 \cdot 10^{239}:\\
\;\;\;\;\left(9 \cdot \frac{y \cdot x}{c \cdot z} + \frac{\sqrt[3]{b} \cdot \sqrt[3]{b}}{z} \cdot \frac{\sqrt[3]{b}}{c}\right) - \left(t \cdot \frac{a}{c}\right) \cdot 4\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \left(\frac{x}{z} \cdot \frac{y}{c}\right) \cdot 9\right) - 4 \cdot \frac{t}{\frac{c}{a}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r38326486 = x;
double r38326487 = 9.0;
double r38326488 = r38326486 * r38326487;
double r38326489 = y;
double r38326490 = r38326488 * r38326489;
double r38326491 = z;
double r38326492 = 4.0;
double r38326493 = r38326491 * r38326492;
double r38326494 = t;
double r38326495 = r38326493 * r38326494;
double r38326496 = a;
double r38326497 = r38326495 * r38326496;
double r38326498 = r38326490 - r38326497;
double r38326499 = b;
double r38326500 = r38326498 + r38326499;
double r38326501 = c;
double r38326502 = r38326491 * r38326501;
double r38326503 = r38326500 / r38326502;
return r38326503;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r38326504 = x;
double r38326505 = 9.0;
double r38326506 = r38326504 * r38326505;
double r38326507 = y;
double r38326508 = r38326506 * r38326507;
double r38326509 = -7.169587714961531e+216;
bool r38326510 = r38326508 <= r38326509;
double r38326511 = b;
double r38326512 = c;
double r38326513 = z;
double r38326514 = r38326512 * r38326513;
double r38326515 = r38326511 / r38326514;
double r38326516 = r38326504 / r38326513;
double r38326517 = r38326507 / r38326512;
double r38326518 = r38326516 * r38326517;
double r38326519 = r38326518 * r38326505;
double r38326520 = r38326515 + r38326519;
double r38326521 = 4.0;
double r38326522 = t;
double r38326523 = a;
double r38326524 = r38326512 / r38326523;
double r38326525 = r38326522 / r38326524;
double r38326526 = r38326521 * r38326525;
double r38326527 = r38326520 - r38326526;
double r38326528 = -1272864.3162241075;
bool r38326529 = r38326508 <= r38326528;
double r38326530 = r38326507 * r38326504;
double r38326531 = r38326530 / r38326514;
double r38326532 = r38326505 * r38326531;
double r38326533 = cbrt(r38326511);
double r38326534 = r38326533 * r38326533;
double r38326535 = r38326534 / r38326513;
double r38326536 = r38326533 / r38326512;
double r38326537 = r38326535 * r38326536;
double r38326538 = r38326532 + r38326537;
double r38326539 = r38326523 / r38326512;
double r38326540 = r38326522 * r38326539;
double r38326541 = r38326540 * r38326521;
double r38326542 = r38326538 - r38326541;
double r38326543 = -1.3076341490435257e-232;
bool r38326544 = r38326508 <= r38326543;
double r38326545 = 1.0;
double r38326546 = r38326508 + r38326511;
double r38326547 = r38326546 / r38326513;
double r38326548 = r38326521 * r38326523;
double r38326549 = r38326548 * r38326522;
double r38326550 = r38326547 - r38326549;
double r38326551 = r38326512 / r38326550;
double r38326552 = r38326545 / r38326551;
double r38326553 = 2.6920764467674643e+239;
bool r38326554 = r38326508 <= r38326553;
double r38326555 = r38326554 ? r38326542 : r38326527;
double r38326556 = r38326544 ? r38326552 : r38326555;
double r38326557 = r38326529 ? r38326542 : r38326556;
double r38326558 = r38326510 ? r38326527 : r38326557;
return r38326558;
}




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.3 |
|---|---|
| Target | 14.1 |
| Herbie | 8.8 |
if (* (* x 9.0) y) < -7.169587714961531e+216 or 2.6920764467674643e+239 < (* (* x 9.0) y) Initial program 45.1
Simplified44.4
Taylor expanded around 0 40.0
rmApplied associate-/l*38.5
rmApplied times-frac10.1
if -7.169587714961531e+216 < (* (* x 9.0) y) < -1272864.3162241075 or -1.3076341490435257e-232 < (* (* x 9.0) y) < 2.6920764467674643e+239Initial program 17.0
Simplified9.3
Taylor expanded around 0 7.7
rmApplied *-un-lft-identity7.7
Applied times-frac7.6
Simplified7.6
rmApplied add-cube-cbrt7.9
Applied times-frac8.9
if -1272864.3162241075 < (* (* x 9.0) y) < -1.3076341490435257e-232Initial program 15.5
Simplified6.9
rmApplied clear-num7.2
Final simplification8.8
herbie shell --seed 2019179
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:herbie-target
(if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9.0 (/ y c)) (/ x z)) (/ b (* c z))) (* 4.0 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (- (+ (* 9.0 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4.0 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))