\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 r511509 = x;
double r511510 = y;
double r511511 = 2.0;
double r511512 = z;
double r511513 = t;
double r511514 = a;
double r511515 = r511513 + r511514;
double r511516 = sqrt(r511515);
double r511517 = r511512 * r511516;
double r511518 = r511517 / r511513;
double r511519 = b;
double r511520 = c;
double r511521 = r511519 - r511520;
double r511522 = 5.0;
double r511523 = 6.0;
double r511524 = r511522 / r511523;
double r511525 = r511514 + r511524;
double r511526 = 3.0;
double r511527 = r511513 * r511526;
double r511528 = r511511 / r511527;
double r511529 = r511525 - r511528;
double r511530 = r511521 * r511529;
double r511531 = r511518 - r511530;
double r511532 = r511511 * r511531;
double r511533 = exp(r511532);
double r511534 = r511510 * r511533;
double r511535 = r511509 + r511534;
double r511536 = r511509 / r511535;
return r511536;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r511537 = t;
double r511538 = -9.84457129409398e-106;
bool r511539 = r511537 <= r511538;
double r511540 = 1.1526597656514836e-304;
bool r511541 = r511537 <= r511540;
double r511542 = !r511541;
bool r511543 = r511539 || r511542;
double r511544 = x;
double r511545 = y;
double r511546 = 2.0;
double r511547 = z;
double r511548 = cbrt(r511537);
double r511549 = r511548 * r511548;
double r511550 = r511547 / r511549;
double r511551 = a;
double r511552 = r511537 + r511551;
double r511553 = sqrt(r511552);
double r511554 = r511553 / r511548;
double r511555 = r511550 * r511554;
double r511556 = b;
double r511557 = c;
double r511558 = r511556 - r511557;
double r511559 = 5.0;
double r511560 = 6.0;
double r511561 = r511559 / r511560;
double r511562 = r511551 + r511561;
double r511563 = 3.0;
double r511564 = r511537 * r511563;
double r511565 = r511546 / r511564;
double r511566 = r511562 - r511565;
double r511567 = r511558 * r511566;
double r511568 = r511555 - r511567;
double r511569 = r511546 * r511568;
double r511570 = exp(r511569);
double r511571 = r511545 * r511570;
double r511572 = r511544 + r511571;
double r511573 = r511544 / r511572;
double r511574 = r511547 * r511554;
double r511575 = r511551 - r511561;
double r511576 = r511575 * r511564;
double r511577 = r511574 * r511576;
double r511578 = r511551 * r511551;
double r511579 = r511561 * r511561;
double r511580 = r511578 - r511579;
double r511581 = r511580 * r511564;
double r511582 = r511575 * r511546;
double r511583 = r511581 - r511582;
double r511584 = r511558 * r511583;
double r511585 = r511549 * r511584;
double r511586 = r511577 - r511585;
double r511587 = r511549 * r511576;
double r511588 = r511586 / r511587;
double r511589 = r511546 * r511588;
double r511590 = exp(r511589);
double r511591 = r511545 * r511590;
double r511592 = r511544 + r511591;
double r511593 = r511544 / r511592;
double r511594 = r511543 ? r511573 : r511593;
return r511594;
}




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)))))))))))