\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 -9.8445712940939801 \cdot 10^{-106} \lor \neg \left(t \le 1.1526597656514836 \cdot 10^{-304}\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 r582517 = x;
double r582518 = y;
double r582519 = 2.0;
double r582520 = z;
double r582521 = t;
double r582522 = a;
double r582523 = r582521 + r582522;
double r582524 = sqrt(r582523);
double r582525 = r582520 * r582524;
double r582526 = r582525 / r582521;
double r582527 = b;
double r582528 = c;
double r582529 = r582527 - r582528;
double r582530 = 5.0;
double r582531 = 6.0;
double r582532 = r582530 / r582531;
double r582533 = r582522 + r582532;
double r582534 = 3.0;
double r582535 = r582521 * r582534;
double r582536 = r582519 / r582535;
double r582537 = r582533 - r582536;
double r582538 = r582529 * r582537;
double r582539 = r582526 - r582538;
double r582540 = r582519 * r582539;
double r582541 = exp(r582540);
double r582542 = r582518 * r582541;
double r582543 = r582517 + r582542;
double r582544 = r582517 / r582543;
return r582544;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r582545 = t;
double r582546 = -9.84457129409398e-106;
bool r582547 = r582545 <= r582546;
double r582548 = 1.1526597656514836e-304;
bool r582549 = r582545 <= r582548;
double r582550 = !r582549;
bool r582551 = r582547 || r582550;
double r582552 = x;
double r582553 = y;
double r582554 = 2.0;
double r582555 = z;
double r582556 = cbrt(r582545);
double r582557 = r582556 * r582556;
double r582558 = r582555 / r582557;
double r582559 = a;
double r582560 = r582545 + r582559;
double r582561 = sqrt(r582560);
double r582562 = r582561 / r582556;
double r582563 = r582558 * r582562;
double r582564 = b;
double r582565 = c;
double r582566 = r582564 - r582565;
double r582567 = 5.0;
double r582568 = 6.0;
double r582569 = r582567 / r582568;
double r582570 = r582559 + r582569;
double r582571 = 3.0;
double r582572 = r582545 * r582571;
double r582573 = r582554 / r582572;
double r582574 = r582570 - r582573;
double r582575 = r582566 * r582574;
double r582576 = r582563 - r582575;
double r582577 = r582554 * r582576;
double r582578 = exp(r582577);
double r582579 = r582553 * r582578;
double r582580 = r582552 + r582579;
double r582581 = r582552 / r582580;
double r582582 = r582555 * r582562;
double r582583 = r582559 - r582569;
double r582584 = r582583 * r582572;
double r582585 = r582582 * r582584;
double r582586 = r582559 * r582559;
double r582587 = r582569 * r582569;
double r582588 = r582586 - r582587;
double r582589 = r582588 * r582572;
double r582590 = r582583 * r582554;
double r582591 = r582589 - r582590;
double r582592 = r582566 * r582591;
double r582593 = r582557 * r582592;
double r582594 = r582585 - r582593;
double r582595 = r582557 * r582584;
double r582596 = r582594 / r582595;
double r582597 = r582554 * r582596;
double r582598 = exp(r582597);
double r582599 = r582553 * r582598;
double r582600 = r582552 + r582599;
double r582601 = r582552 / r582600;
double r582602 = r582551 ? r582581 : r582601;
return r582602;
}




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.5 |
if t < -9.84457129409398e-106 or 1.1526597656514836e-304 < t Initial program 3.3
rmApplied add-cube-cbrt3.3
Applied times-frac2.1
if -9.84457129409398e-106 < t < 1.1526597656514836e-304Initial program 8.4
rmApplied add-cube-cbrt8.4
Applied times-frac8.5
rmApplied flip-+10.7
Applied frac-sub10.7
Applied associate-*r/10.7
Applied associate-*l/10.7
Applied frac-sub5.7
Final simplification2.5
herbie shell --seed 2020046
(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)))))))))))