\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 3.21167442017789031 \cdot 10^{167}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\frac{1 + \mathsf{fma}\left(\alpha, \beta, \alpha + \beta\right)}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(0\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\
\end{array}double f(double alpha, double beta) {
double r175219 = alpha;
double r175220 = beta;
double r175221 = r175219 + r175220;
double r175222 = r175220 * r175219;
double r175223 = r175221 + r175222;
double r175224 = 1.0;
double r175225 = r175223 + r175224;
double r175226 = 2.0;
double r175227 = r175226 * r175224;
double r175228 = r175221 + r175227;
double r175229 = r175225 / r175228;
double r175230 = r175229 / r175228;
double r175231 = r175228 + r175224;
double r175232 = r175230 / r175231;
return r175232;
}
double f(double alpha, double beta) {
double r175233 = alpha;
double r175234 = 3.2116744201778903e+167;
bool r175235 = r175233 <= r175234;
double r175236 = 1.0;
double r175237 = beta;
double r175238 = r175233 + r175237;
double r175239 = fma(r175233, r175237, r175238);
double r175240 = r175236 + r175239;
double r175241 = 2.0;
double r175242 = fma(r175236, r175241, r175238);
double r175243 = r175240 / r175242;
double r175244 = r175243 / r175242;
double r175245 = expm1(r175244);
double r175246 = log1p(r175245);
double r175247 = fma(r175241, r175236, r175236);
double r175248 = r175238 + r175247;
double r175249 = r175246 / r175248;
double r175250 = 0.0;
double r175251 = expm1(r175250);
double r175252 = log1p(r175251);
double r175253 = r175252 / r175248;
double r175254 = r175235 ? r175249 : r175253;
return r175254;
}



Bits error versus alpha



Bits error versus beta
if alpha < 3.2116744201778903e+167Initial program 1.4
Simplified1.4
rmApplied log1p-expm1-u1.4
if 3.2116744201778903e+167 < alpha Initial program 15.9
Simplified15.9
rmApplied log1p-expm1-u15.9
Taylor expanded around inf 6.8
Final simplification2.2
herbie shell --seed 2020046 +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)))