\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}\;a \le 2.108535095172928346218613549125577993008 \cdot 10^{241}:\\
\;\;\;\;\frac{x}{x + e^{\left(\left(\left(a - \frac{0.6666666666666666296592325124947819858789}{t}\right) + \frac{5}{6}\right) \cdot \left(c - b\right) + \left(\frac{\sqrt[3]{\sqrt{a + t}}}{\sqrt[3]{t}} \cdot \left(\frac{\sqrt[3]{\sqrt{a + t}}}{\sqrt[3]{t}} \cdot z\right)\right) \cdot \frac{\sqrt[3]{\sqrt{a + t}}}{\sqrt[3]{t}}\right) \cdot 2} \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + e^{2 \cdot \left(a \cdot \left(c - b\right) - b \cdot 0.8333333333333333703407674875052180141211\right)} \cdot y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r315676 = x;
double r315677 = y;
double r315678 = 2.0;
double r315679 = z;
double r315680 = t;
double r315681 = a;
double r315682 = r315680 + r315681;
double r315683 = sqrt(r315682);
double r315684 = r315679 * r315683;
double r315685 = r315684 / r315680;
double r315686 = b;
double r315687 = c;
double r315688 = r315686 - r315687;
double r315689 = 5.0;
double r315690 = 6.0;
double r315691 = r315689 / r315690;
double r315692 = r315681 + r315691;
double r315693 = 3.0;
double r315694 = r315680 * r315693;
double r315695 = r315678 / r315694;
double r315696 = r315692 - r315695;
double r315697 = r315688 * r315696;
double r315698 = r315685 - r315697;
double r315699 = r315678 * r315698;
double r315700 = exp(r315699);
double r315701 = r315677 * r315700;
double r315702 = r315676 + r315701;
double r315703 = r315676 / r315702;
return r315703;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r315704 = a;
double r315705 = 2.1085350951729283e+241;
bool r315706 = r315704 <= r315705;
double r315707 = x;
double r315708 = 0.6666666666666666;
double r315709 = t;
double r315710 = r315708 / r315709;
double r315711 = r315704 - r315710;
double r315712 = 5.0;
double r315713 = 6.0;
double r315714 = r315712 / r315713;
double r315715 = r315711 + r315714;
double r315716 = c;
double r315717 = b;
double r315718 = r315716 - r315717;
double r315719 = r315715 * r315718;
double r315720 = r315704 + r315709;
double r315721 = sqrt(r315720);
double r315722 = cbrt(r315721);
double r315723 = cbrt(r315709);
double r315724 = r315722 / r315723;
double r315725 = z;
double r315726 = r315724 * r315725;
double r315727 = r315724 * r315726;
double r315728 = r315727 * r315724;
double r315729 = r315719 + r315728;
double r315730 = 2.0;
double r315731 = r315729 * r315730;
double r315732 = exp(r315731);
double r315733 = y;
double r315734 = r315732 * r315733;
double r315735 = r315707 + r315734;
double r315736 = r315707 / r315735;
double r315737 = r315704 * r315718;
double r315738 = 0.8333333333333334;
double r315739 = r315717 * r315738;
double r315740 = r315737 - r315739;
double r315741 = r315730 * r315740;
double r315742 = exp(r315741);
double r315743 = r315742 * r315733;
double r315744 = r315707 + r315743;
double r315745 = r315707 / r315744;
double r315746 = r315706 ? r315736 : r315745;
return r315746;
}




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.8 |
|---|---|
| Target | 2.8 |
| Herbie | 2.9 |
if a < 2.1085350951729283e+241Initial program 3.3
Simplified2.9
rmApplied add-log-exp8.9
Taylor expanded around 0 2.9
rmApplied add-cube-cbrt2.9
Applied add-cube-cbrt2.9
Applied times-frac2.9
Applied associate-*r*2.4
Simplified2.4
if 2.1085350951729283e+241 < a Initial program 8.3
Simplified8.5
rmApplied add-log-exp16.6
Taylor expanded around inf 13.8
Simplified7.1
Final simplification2.9
herbie shell --seed 2019194
(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)))))))))))