\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}\begin{array}{l}
\mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \le -0.9999999999946434:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\left(\frac{4}{{\alpha}^{2}} - \frac{2}{\alpha}\right) - \frac{8}{{\alpha}^{3}}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2} - 1\right)\right)\right)}{2}\\
\end{array}double f(double alpha, double beta) {
double r127616 = beta;
double r127617 = alpha;
double r127618 = r127616 - r127617;
double r127619 = r127617 + r127616;
double r127620 = 2.0;
double r127621 = r127619 + r127620;
double r127622 = r127618 / r127621;
double r127623 = 1.0;
double r127624 = r127622 + r127623;
double r127625 = r127624 / r127620;
return r127625;
}
double f(double alpha, double beta) {
double r127626 = beta;
double r127627 = alpha;
double r127628 = r127626 - r127627;
double r127629 = r127627 + r127626;
double r127630 = 2.0;
double r127631 = r127629 + r127630;
double r127632 = r127628 / r127631;
double r127633 = -0.9999999999946434;
bool r127634 = r127632 <= r127633;
double r127635 = r127626 / r127631;
double r127636 = 4.0;
double r127637 = 2.0;
double r127638 = pow(r127627, r127637);
double r127639 = r127636 / r127638;
double r127640 = r127630 / r127627;
double r127641 = r127639 - r127640;
double r127642 = 8.0;
double r127643 = 3.0;
double r127644 = pow(r127627, r127643);
double r127645 = r127642 / r127644;
double r127646 = r127641 - r127645;
double r127647 = r127635 - r127646;
double r127648 = r127647 / r127630;
double r127649 = r127627 / r127631;
double r127650 = 1.0;
double r127651 = r127649 - r127650;
double r127652 = r127635 - r127651;
double r127653 = expm1(r127652);
double r127654 = log1p(r127653);
double r127655 = r127654 / r127630;
double r127656 = r127634 ? r127648 : r127655;
return r127656;
}



Bits error versus alpha



Bits error versus beta
Results
if (/ (- beta alpha) (+ (+ alpha beta) 2.0)) < -0.9999999999946434Initial program 60.3
rmApplied div-sub60.3
Applied associate-+l-58.4
Taylor expanded around inf 10.7
Simplified10.7
if -0.9999999999946434 < (/ (- beta alpha) (+ (+ alpha beta) 2.0)) Initial program 0.3
rmApplied div-sub0.3
Applied associate-+l-0.3
rmApplied add-exp-log0.3
rmApplied add-cbrt-cube0.3
Simplified0.3
rmApplied log1p-expm1-u0.3
Simplified0.3
Final simplification3.0
herbie shell --seed 2019198 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/1"
:pre (and (> alpha -1.0) (> beta -1.0))
(/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0))