\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\begin{array}{l}
\mathbf{if}\;\alpha \le 1.1138260050088568 \cdot 10^{+191}:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\frac{1.0 + \left(\beta \cdot \alpha + \left(\beta + \alpha\right)\right)}{\left(\beta + \alpha\right) + 2}}{\left(\beta + \alpha\right) + 2}\right)\right)}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{1}{\alpha} + \frac{7.999999999999998}{\alpha \cdot \left(\alpha \cdot \alpha\right)}\right) - \frac{3.0}{\alpha \cdot \alpha}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\
\end{array}double f(double alpha, double beta) {
double r2486725 = alpha;
double r2486726 = beta;
double r2486727 = r2486725 + r2486726;
double r2486728 = r2486726 * r2486725;
double r2486729 = r2486727 + r2486728;
double r2486730 = 1.0;
double r2486731 = r2486729 + r2486730;
double r2486732 = 2.0;
double r2486733 = 1.0;
double r2486734 = r2486732 * r2486733;
double r2486735 = r2486727 + r2486734;
double r2486736 = r2486731 / r2486735;
double r2486737 = r2486736 / r2486735;
double r2486738 = r2486735 + r2486730;
double r2486739 = r2486737 / r2486738;
return r2486739;
}
double f(double alpha, double beta) {
double r2486740 = alpha;
double r2486741 = 1.1138260050088568e+191;
bool r2486742 = r2486740 <= r2486741;
double r2486743 = 1.0;
double r2486744 = beta;
double r2486745 = r2486744 * r2486740;
double r2486746 = r2486744 + r2486740;
double r2486747 = r2486745 + r2486746;
double r2486748 = r2486743 + r2486747;
double r2486749 = 2.0;
double r2486750 = r2486746 + r2486749;
double r2486751 = r2486748 / r2486750;
double r2486752 = r2486751 / r2486750;
double r2486753 = log1p(r2486752);
double r2486754 = expm1(r2486753);
double r2486755 = r2486743 + r2486750;
double r2486756 = r2486754 / r2486755;
double r2486757 = 1.0;
double r2486758 = r2486757 / r2486740;
double r2486759 = 7.999999999999998;
double r2486760 = r2486740 * r2486740;
double r2486761 = r2486740 * r2486760;
double r2486762 = r2486759 / r2486761;
double r2486763 = r2486758 + r2486762;
double r2486764 = 3.0;
double r2486765 = r2486764 / r2486760;
double r2486766 = r2486763 - r2486765;
double r2486767 = r2486766 / r2486755;
double r2486768 = r2486742 ? r2486756 : r2486767;
return r2486768;
}



Bits error versus alpha



Bits error versus beta
Results
if alpha < 1.1138260050088568e+191Initial program 1.7
rmApplied expm1-log1p-u1.7
if 1.1138260050088568e+191 < alpha Initial program 17.2
rmApplied expm1-log1p-u17.2
Taylor expanded around inf 7.3
Simplified7.3
Final simplification2.4
herbie shell --seed 2019156 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:pre (and (> alpha -1) (> beta -1))
(/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1.0)))