\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 -8.606619718217222145283218420286548947144 \cdot 10^{-16} \lor \neg \left(t \le -5.323635264924309396140940049972566276942 \cdot 10^{-286}\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 \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - t \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)}{t \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 r353554 = x;
double r353555 = y;
double r353556 = 2.0;
double r353557 = z;
double r353558 = t;
double r353559 = a;
double r353560 = r353558 + r353559;
double r353561 = sqrt(r353560);
double r353562 = r353557 * r353561;
double r353563 = r353562 / r353558;
double r353564 = b;
double r353565 = c;
double r353566 = r353564 - r353565;
double r353567 = 5.0;
double r353568 = 6.0;
double r353569 = r353567 / r353568;
double r353570 = r353559 + r353569;
double r353571 = 3.0;
double r353572 = r353558 * r353571;
double r353573 = r353556 / r353572;
double r353574 = r353570 - r353573;
double r353575 = r353566 * r353574;
double r353576 = r353563 - r353575;
double r353577 = r353556 * r353576;
double r353578 = exp(r353577);
double r353579 = r353555 * r353578;
double r353580 = r353554 + r353579;
double r353581 = r353554 / r353580;
return r353581;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r353582 = t;
double r353583 = -8.606619718217222e-16;
bool r353584 = r353582 <= r353583;
double r353585 = -5.323635264924309e-286;
bool r353586 = r353582 <= r353585;
double r353587 = !r353586;
bool r353588 = r353584 || r353587;
double r353589 = x;
double r353590 = y;
double r353591 = 2.0;
double r353592 = z;
double r353593 = cbrt(r353582);
double r353594 = r353593 * r353593;
double r353595 = r353592 / r353594;
double r353596 = a;
double r353597 = r353582 + r353596;
double r353598 = sqrt(r353597);
double r353599 = r353598 / r353593;
double r353600 = r353595 * r353599;
double r353601 = b;
double r353602 = c;
double r353603 = r353601 - r353602;
double r353604 = 5.0;
double r353605 = 6.0;
double r353606 = r353604 / r353605;
double r353607 = r353596 + r353606;
double r353608 = 3.0;
double r353609 = r353582 * r353608;
double r353610 = r353591 / r353609;
double r353611 = r353607 - r353610;
double r353612 = r353603 * r353611;
double r353613 = r353600 - r353612;
double r353614 = r353591 * r353613;
double r353615 = exp(r353614);
double r353616 = r353590 * r353615;
double r353617 = r353589 + r353616;
double r353618 = r353589 / r353617;
double r353619 = r353592 * r353598;
double r353620 = r353596 - r353606;
double r353621 = r353620 * r353609;
double r353622 = r353619 * r353621;
double r353623 = r353596 * r353596;
double r353624 = r353606 * r353606;
double r353625 = r353623 - r353624;
double r353626 = r353625 * r353609;
double r353627 = r353620 * r353591;
double r353628 = r353626 - r353627;
double r353629 = r353603 * r353628;
double r353630 = r353582 * r353629;
double r353631 = r353622 - r353630;
double r353632 = r353582 * r353621;
double r353633 = r353631 / r353632;
double r353634 = r353591 * r353633;
double r353635 = exp(r353634);
double r353636 = r353590 * r353635;
double r353637 = r353589 + r353636;
double r353638 = r353589 / r353637;
double r353639 = r353588 ? r353618 : r353638;
return r353639;
}




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.1 |
|---|---|
| Target | 3.2 |
| Herbie | 2.9 |
if t < -8.606619718217222e-16 or -5.323635264924309e-286 < t Initial program 3.7
rmApplied add-cube-cbrt3.7
Applied times-frac2.2
if -8.606619718217222e-16 < t < -5.323635264924309e-286Initial program 6.1
rmApplied flip-+9.0
Applied frac-sub9.0
Applied associate-*r/9.1
Applied frac-sub6.5
Final simplification2.9
herbie shell --seed 2019308
(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.1183266448915811e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.83333333333333337 c)) (* a b))))))) (if (< t 5.19658877065154709e-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)))))))))))