\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\begin{array}{l}
\mathbf{if}\;\alpha \le 1.1856454375998788 \cdot 10^{206}:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}\right)\right)}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\mathsf{fma}\left(2, \frac{1}{{\alpha}^{2}}, 1 - 1 \cdot \frac{1}{\alpha}\right)}{\left(\alpha + \beta\right) + 2 \cdot 1}\right)\right)}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\
\end{array}double f(double alpha, double beta) {
double r109792 = alpha;
double r109793 = beta;
double r109794 = r109792 + r109793;
double r109795 = r109793 * r109792;
double r109796 = r109794 + r109795;
double r109797 = 1.0;
double r109798 = r109796 + r109797;
double r109799 = 2.0;
double r109800 = r109799 * r109797;
double r109801 = r109794 + r109800;
double r109802 = r109798 / r109801;
double r109803 = r109802 / r109801;
double r109804 = r109801 + r109797;
double r109805 = r109803 / r109804;
return r109805;
}
double f(double alpha, double beta) {
double r109806 = alpha;
double r109807 = 1.1856454375998788e+206;
bool r109808 = r109806 <= r109807;
double r109809 = beta;
double r109810 = r109806 + r109809;
double r109811 = r109809 * r109806;
double r109812 = r109810 + r109811;
double r109813 = 1.0;
double r109814 = r109812 + r109813;
double r109815 = 2.0;
double r109816 = r109815 * r109813;
double r109817 = r109810 + r109816;
double r109818 = r109814 / r109817;
double r109819 = r109818 / r109817;
double r109820 = log1p(r109819);
double r109821 = expm1(r109820);
double r109822 = r109817 + r109813;
double r109823 = r109821 / r109822;
double r109824 = 1.0;
double r109825 = 2.0;
double r109826 = pow(r109806, r109825);
double r109827 = r109824 / r109826;
double r109828 = r109824 / r109806;
double r109829 = r109813 * r109828;
double r109830 = r109824 - r109829;
double r109831 = fma(r109815, r109827, r109830);
double r109832 = r109831 / r109817;
double r109833 = log1p(r109832);
double r109834 = expm1(r109833);
double r109835 = r109834 / r109822;
double r109836 = r109808 ? r109823 : r109835;
return r109836;
}



Bits error versus alpha



Bits error versus beta
if alpha < 1.1856454375998788e+206Initial program 1.9
rmApplied expm1-log1p-u1.9
if 1.1856454375998788e+206 < alpha Initial program 17.8
rmApplied expm1-log1p-u17.8
Taylor expanded around inf 5.4
Simplified5.4
Final simplification2.3
herbie shell --seed 2020100 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:precision binary64
:pre (and (> alpha -1) (> beta -1))
(/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1)))