\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}\;z \le 8.85175204914312434 \cdot 10^{213}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{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 \mathsf{fma}\left(\frac{z}{1}, \frac{\sqrt{t + a}}{t}, -\mathsf{fma}\left(a, b, -\mathsf{fma}\left(a, c, 0.83333333333333337 \cdot c\right)\right)\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r364689 = x;
double r364690 = y;
double r364691 = 2.0;
double r364692 = z;
double r364693 = t;
double r364694 = a;
double r364695 = r364693 + r364694;
double r364696 = sqrt(r364695);
double r364697 = r364692 * r364696;
double r364698 = r364697 / r364693;
double r364699 = b;
double r364700 = c;
double r364701 = r364699 - r364700;
double r364702 = 5.0;
double r364703 = 6.0;
double r364704 = r364702 / r364703;
double r364705 = r364694 + r364704;
double r364706 = 3.0;
double r364707 = r364693 * r364706;
double r364708 = r364691 / r364707;
double r364709 = r364705 - r364708;
double r364710 = r364701 * r364709;
double r364711 = r364698 - r364710;
double r364712 = r364691 * r364711;
double r364713 = exp(r364712);
double r364714 = r364690 * r364713;
double r364715 = r364689 + r364714;
double r364716 = r364689 / r364715;
return r364716;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r364717 = z;
double r364718 = 8.851752049143124e+213;
bool r364719 = r364717 <= r364718;
double r364720 = x;
double r364721 = y;
double r364722 = 2.0;
double r364723 = t;
double r364724 = a;
double r364725 = r364723 + r364724;
double r364726 = sqrt(r364725);
double r364727 = r364717 * r364726;
double r364728 = 1.0;
double r364729 = r364728 / r364723;
double r364730 = b;
double r364731 = c;
double r364732 = r364730 - r364731;
double r364733 = 5.0;
double r364734 = 6.0;
double r364735 = r364733 / r364734;
double r364736 = r364724 + r364735;
double r364737 = 3.0;
double r364738 = r364723 * r364737;
double r364739 = r364722 / r364738;
double r364740 = r364736 - r364739;
double r364741 = r364732 * r364740;
double r364742 = -r364741;
double r364743 = fma(r364727, r364729, r364742);
double r364744 = r364722 * r364743;
double r364745 = exp(r364744);
double r364746 = r364721 * r364745;
double r364747 = r364720 + r364746;
double r364748 = r364720 / r364747;
double r364749 = r364717 / r364728;
double r364750 = r364726 / r364723;
double r364751 = 0.8333333333333334;
double r364752 = r364751 * r364731;
double r364753 = fma(r364724, r364731, r364752);
double r364754 = -r364753;
double r364755 = fma(r364724, r364730, r364754);
double r364756 = -r364755;
double r364757 = fma(r364749, r364750, r364756);
double r364758 = r364722 * r364757;
double r364759 = exp(r364758);
double r364760 = r364721 * r364759;
double r364761 = r364720 + r364760;
double r364762 = r364720 / r364761;
double r364763 = r364719 ? r364748 : r364762;
return r364763;
}




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
| Original | 3.9 |
|---|---|
| Target | 3.0 |
| Herbie | 2.2 |
if z < 8.851752049143124e+213Initial program 2.9
rmApplied div-inv2.9
Applied fma-neg1.8
if 8.851752049143124e+213 < z Initial program 15.1
rmApplied *-un-lft-identity15.1
Applied times-frac8.7
Applied fma-neg5.7
Taylor expanded around inf 8.0
Simplified7.4
Final simplification2.2
herbie shell --seed 2020035 +o rules:numerics
(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)))))))))))