\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 -1:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{\frac{4}{\alpha}}{\alpha} - \left(\frac{2}{\alpha} - \frac{-8}{{\alpha}^{3}}\right)\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \log \left(e^{\frac{\alpha}{\left(\alpha + \beta\right) + 2} - 1}\right)}{2}\\
\end{array}double f(double alpha, double beta) {
double r98884 = beta;
double r98885 = alpha;
double r98886 = r98884 - r98885;
double r98887 = r98885 + r98884;
double r98888 = 2.0;
double r98889 = r98887 + r98888;
double r98890 = r98886 / r98889;
double r98891 = 1.0;
double r98892 = r98890 + r98891;
double r98893 = r98892 / r98888;
return r98893;
}
double f(double alpha, double beta) {
double r98894 = beta;
double r98895 = alpha;
double r98896 = r98894 - r98895;
double r98897 = r98895 + r98894;
double r98898 = 2.0;
double r98899 = r98897 + r98898;
double r98900 = r98896 / r98899;
double r98901 = -1.0;
bool r98902 = r98900 <= r98901;
double r98903 = r98894 / r98899;
double r98904 = 4.0;
double r98905 = r98904 / r98895;
double r98906 = r98905 / r98895;
double r98907 = r98898 / r98895;
double r98908 = 8.0;
double r98909 = -r98908;
double r98910 = 3.0;
double r98911 = pow(r98895, r98910);
double r98912 = r98909 / r98911;
double r98913 = r98907 - r98912;
double r98914 = r98906 - r98913;
double r98915 = r98903 - r98914;
double r98916 = r98915 / r98898;
double r98917 = r98895 / r98899;
double r98918 = 1.0;
double r98919 = r98917 - r98918;
double r98920 = exp(r98919);
double r98921 = log(r98920);
double r98922 = r98903 - r98921;
double r98923 = r98922 / r98898;
double r98924 = r98902 ? r98916 : r98923;
return r98924;
}



Bits error versus alpha



Bits error versus beta
Results
if (/ (- beta alpha) (+ (+ alpha beta) 2.0)) < -1.0Initial program 60.6
rmApplied div-sub60.6
Applied associate-+l-58.8
rmApplied add-log-exp58.8
Applied add-log-exp58.8
Applied diff-log58.8
Simplified58.8
Taylor expanded around inf 10.4
Simplified10.4
if -1.0 < (/ (- beta alpha) (+ (+ alpha beta) 2.0)) Initial program 0.6
rmApplied div-sub0.6
Applied associate-+l-0.6
rmApplied add-log-exp0.6
Applied add-log-exp0.6
Applied diff-log0.6
Simplified0.6
Final simplification3.2
herbie shell --seed 2020046
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/1"
:precision binary64
:pre (and (> alpha -1) (> beta -1))
(/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2)) 1) 2))