\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.265329209545527167418045692298918612185 \cdot 10^{-280}:\\
\;\;\;\;\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{elif}\;t \le 2.266034278735730289749003584874828813841 \cdot 10^{-170}:\\
\;\;\;\;\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)}}}\\
\mathbf{else}:\\
\;\;\;\;\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)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r86701627 = x;
double r86701628 = y;
double r86701629 = 2.0;
double r86701630 = z;
double r86701631 = t;
double r86701632 = a;
double r86701633 = r86701631 + r86701632;
double r86701634 = sqrt(r86701633);
double r86701635 = r86701630 * r86701634;
double r86701636 = r86701635 / r86701631;
double r86701637 = b;
double r86701638 = c;
double r86701639 = r86701637 - r86701638;
double r86701640 = 5.0;
double r86701641 = 6.0;
double r86701642 = r86701640 / r86701641;
double r86701643 = r86701632 + r86701642;
double r86701644 = 3.0;
double r86701645 = r86701631 * r86701644;
double r86701646 = r86701629 / r86701645;
double r86701647 = r86701643 - r86701646;
double r86701648 = r86701639 * r86701647;
double r86701649 = r86701636 - r86701648;
double r86701650 = r86701629 * r86701649;
double r86701651 = exp(r86701650);
double r86701652 = r86701628 * r86701651;
double r86701653 = r86701627 + r86701652;
double r86701654 = r86701627 / r86701653;
return r86701654;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r86701655 = t;
double r86701656 = 9.265329209545527e-280;
bool r86701657 = r86701655 <= r86701656;
double r86701658 = x;
double r86701659 = y;
double r86701660 = 2.0;
double r86701661 = z;
double r86701662 = cbrt(r86701655);
double r86701663 = r86701662 * r86701662;
double r86701664 = r86701661 / r86701663;
double r86701665 = a;
double r86701666 = r86701655 + r86701665;
double r86701667 = sqrt(r86701666);
double r86701668 = r86701667 / r86701662;
double r86701669 = r86701664 * r86701668;
double r86701670 = b;
double r86701671 = c;
double r86701672 = r86701670 - r86701671;
double r86701673 = 5.0;
double r86701674 = 6.0;
double r86701675 = r86701673 / r86701674;
double r86701676 = r86701665 + r86701675;
double r86701677 = 3.0;
double r86701678 = r86701655 * r86701677;
double r86701679 = r86701660 / r86701678;
double r86701680 = r86701676 - r86701679;
double r86701681 = r86701672 * r86701680;
double r86701682 = r86701669 - r86701681;
double r86701683 = r86701660 * r86701682;
double r86701684 = exp(r86701683);
double r86701685 = r86701659 * r86701684;
double r86701686 = r86701658 + r86701685;
double r86701687 = r86701658 / r86701686;
double r86701688 = 2.2660342787357303e-170;
bool r86701689 = r86701655 <= r86701688;
double r86701690 = r86701661 * r86701668;
double r86701691 = r86701665 - r86701675;
double r86701692 = r86701691 * r86701678;
double r86701693 = r86701690 * r86701692;
double r86701694 = r86701665 * r86701665;
double r86701695 = r86701675 * r86701675;
double r86701696 = r86701694 - r86701695;
double r86701697 = r86701696 * r86701678;
double r86701698 = r86701691 * r86701660;
double r86701699 = r86701697 - r86701698;
double r86701700 = r86701672 * r86701699;
double r86701701 = r86701663 * r86701700;
double r86701702 = r86701693 - r86701701;
double r86701703 = r86701663 * r86701692;
double r86701704 = r86701702 / r86701703;
double r86701705 = r86701660 * r86701704;
double r86701706 = exp(r86701705);
double r86701707 = r86701659 * r86701706;
double r86701708 = r86701658 + r86701707;
double r86701709 = r86701658 / r86701708;
double r86701710 = r86701689 ? r86701709 : r86701687;
double r86701711 = r86701657 ? r86701687 : r86701710;
return r86701711;
}




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 | 3.9 |
|---|---|
| Target | 3.1 |
| Herbie | 2.9 |
if t < 9.265329209545527e-280 or 2.2660342787357303e-170 < t Initial program 3.6
rmApplied add-cube-cbrt3.6
Applied times-frac2.3
if 9.265329209545527e-280 < t < 2.2660342787357303e-170Initial program 7.0
rmApplied add-cube-cbrt7.0
Applied times-frac7.3
rmApplied flip-+11.8
Applied frac-sub11.8
Applied associate-*r/11.8
Applied associate-*l/11.5
Applied frac-sub7.3
Final simplification2.9
herbie shell --seed 2019173
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))