\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\begin{array}{l}
\mathbf{if}\;t \le -1.97649787856798446 \cdot 10^{-84} \lor \neg \left(t \le -4.35171199149127813 \cdot 10^{-269}\right):\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r472482 = x;
double r472483 = y;
double r472484 = 2.0;
double r472485 = z;
double r472486 = t;
double r472487 = a;
double r472488 = r472486 + r472487;
double r472489 = sqrt(r472488);
double r472490 = r472485 * r472489;
double r472491 = r472490 / r472486;
double r472492 = b;
double r472493 = c;
double r472494 = r472492 - r472493;
double r472495 = 5.0;
double r472496 = 6.0;
double r472497 = r472495 / r472496;
double r472498 = r472487 + r472497;
double r472499 = 3.0;
double r472500 = r472486 * r472499;
double r472501 = r472484 / r472500;
double r472502 = r472498 - r472501;
double r472503 = r472494 * r472502;
double r472504 = r472491 - r472503;
double r472505 = r472484 * r472504;
double r472506 = exp(r472505);
double r472507 = r472483 * r472506;
double r472508 = r472482 + r472507;
double r472509 = r472482 / r472508;
return r472509;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r472510 = t;
double r472511 = -1.9764978785679845e-84;
bool r472512 = r472510 <= r472511;
double r472513 = -4.351711991491278e-269;
bool r472514 = r472510 <= r472513;
double r472515 = !r472514;
bool r472516 = r472512 || r472515;
double r472517 = x;
double r472518 = y;
double r472519 = 2.0;
double r472520 = z;
double r472521 = cbrt(r472510);
double r472522 = r472521 * r472521;
double r472523 = r472520 / r472522;
double r472524 = a;
double r472525 = r472510 + r472524;
double r472526 = sqrt(r472525);
double r472527 = r472526 / r472521;
double r472528 = r472523 * r472527;
double r472529 = b;
double r472530 = c;
double r472531 = r472529 - r472530;
double r472532 = 5.0;
double r472533 = 6.0;
double r472534 = r472532 / r472533;
double r472535 = r472524 + r472534;
double r472536 = 3.0;
double r472537 = r472510 * r472536;
double r472538 = r472519 / r472537;
double r472539 = r472535 - r472538;
double r472540 = r472531 * r472539;
double r472541 = r472528 - r472540;
double r472542 = r472519 * r472541;
double r472543 = exp(r472542);
double r472544 = r472518 * r472543;
double r472545 = r472517 + r472544;
double r472546 = r472517 / r472545;
double r472547 = r472520 * r472527;
double r472548 = r472524 - r472534;
double r472549 = r472548 * r472537;
double r472550 = r472547 * r472549;
double r472551 = r472524 * r472524;
double r472552 = r472534 * r472534;
double r472553 = r472551 - r472552;
double r472554 = r472553 * r472537;
double r472555 = r472548 * r472519;
double r472556 = r472554 - r472555;
double r472557 = r472531 * r472556;
double r472558 = r472522 * r472557;
double r472559 = r472550 - r472558;
double r472560 = r472522 * r472549;
double r472561 = r472559 / r472560;
double r472562 = r472519 * r472561;
double r472563 = exp(r472562);
double r472564 = r472518 * r472563;
double r472565 = r472517 + r472564;
double r472566 = r472517 / r472565;
double r472567 = r472516 ? r472546 : r472566;
return r472567;
}




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 | 4.0 |
|---|---|
| Target | 3.1 |
| Herbie | 2.7 |
if t < -1.9764978785679845e-84 or -4.351711991491278e-269 < t Initial program 3.7
rmApplied add-cube-cbrt3.7
Applied times-frac2.2
if -1.9764978785679845e-84 < t < -4.351711991491278e-269Initial program 5.9
rmApplied add-cube-cbrt5.9
Applied times-frac6.0
rmApplied flip-+8.8
Applied frac-sub8.8
Applied associate-*r/8.8
Applied associate-*l/8.7
Applied frac-sub6.0
Final simplification2.7
herbie shell --seed 2020047
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:precision binary64
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3))))))))))))
(/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))