\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}\;\beta \le 1.1125280590322559 \cdot 10^{161}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\frac{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}{\beta + \left(\alpha + \mathsf{fma}\left(\alpha, \beta, 1\right)\right)} \cdot \mathsf{fma}\left(1, 2, \alpha + \beta\right)}\right)\right)}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\left(\left(\frac{1}{\alpha} + \frac{1}{\beta}\right) - \frac{1}{{\alpha}^{2}}\right) \cdot \mathsf{fma}\left(1, 2, \alpha + \beta\right)}\right)\right)}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\
\end{array}double f(double alpha, double beta) {
double r89663 = alpha;
double r89664 = beta;
double r89665 = r89663 + r89664;
double r89666 = r89664 * r89663;
double r89667 = r89665 + r89666;
double r89668 = 1.0;
double r89669 = r89667 + r89668;
double r89670 = 2.0;
double r89671 = r89670 * r89668;
double r89672 = r89665 + r89671;
double r89673 = r89669 / r89672;
double r89674 = r89673 / r89672;
double r89675 = r89672 + r89668;
double r89676 = r89674 / r89675;
return r89676;
}
double f(double alpha, double beta) {
double r89677 = beta;
double r89678 = 1.1125280590322559e+161;
bool r89679 = r89677 <= r89678;
double r89680 = 1.0;
double r89681 = 1.0;
double r89682 = 2.0;
double r89683 = alpha;
double r89684 = r89683 + r89677;
double r89685 = fma(r89681, r89682, r89684);
double r89686 = fma(r89683, r89677, r89681);
double r89687 = r89683 + r89686;
double r89688 = r89677 + r89687;
double r89689 = r89685 / r89688;
double r89690 = r89689 * r89685;
double r89691 = r89680 / r89690;
double r89692 = expm1(r89691);
double r89693 = log1p(r89692);
double r89694 = r89682 * r89681;
double r89695 = r89684 + r89694;
double r89696 = r89695 + r89681;
double r89697 = r89693 / r89696;
double r89698 = r89680 / r89683;
double r89699 = r89680 / r89677;
double r89700 = r89698 + r89699;
double r89701 = 2.0;
double r89702 = pow(r89683, r89701);
double r89703 = r89680 / r89702;
double r89704 = r89700 - r89703;
double r89705 = r89704 * r89685;
double r89706 = r89680 / r89705;
double r89707 = expm1(r89706);
double r89708 = log1p(r89707);
double r89709 = r89708 / r89696;
double r89710 = r89679 ? r89697 : r89709;
return r89710;
}



Bits error versus alpha



Bits error versus beta
if beta < 1.1125280590322559e+161Initial program 1.4
rmApplied log1p-expm1-u1.4
rmApplied clear-num1.4
Simplified1.4
if 1.1125280590322559e+161 < beta Initial program 16.2
rmApplied log1p-expm1-u16.2
rmApplied clear-num16.2
Simplified16.2
Taylor expanded around inf 0.1
Final simplification1.2
herbie shell --seed 2020056 +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)))