\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}\begin{array}{l}
\mathbf{if}\;\alpha \le 8092481.162986398674547672271728515625:\\
\;\;\;\;\frac{\mathsf{fma}\left(\beta - \alpha, \frac{1}{\left(\alpha + \beta\right) + 2}, 1\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\left(\frac{4}{\alpha \cdot \alpha} - \frac{8}{{\alpha}^{3}}\right) - \frac{2}{\alpha}\right)}{2}\\
\end{array}double f(double alpha, double beta) {
double r69232 = beta;
double r69233 = alpha;
double r69234 = r69232 - r69233;
double r69235 = r69233 + r69232;
double r69236 = 2.0;
double r69237 = r69235 + r69236;
double r69238 = r69234 / r69237;
double r69239 = 1.0;
double r69240 = r69238 + r69239;
double r69241 = r69240 / r69236;
return r69241;
}
double f(double alpha, double beta) {
double r69242 = alpha;
double r69243 = 8092481.162986399;
bool r69244 = r69242 <= r69243;
double r69245 = beta;
double r69246 = r69245 - r69242;
double r69247 = 1.0;
double r69248 = r69242 + r69245;
double r69249 = 2.0;
double r69250 = r69248 + r69249;
double r69251 = r69247 / r69250;
double r69252 = 1.0;
double r69253 = fma(r69246, r69251, r69252);
double r69254 = r69253 / r69249;
double r69255 = r69245 / r69250;
double r69256 = 4.0;
double r69257 = r69242 * r69242;
double r69258 = r69256 / r69257;
double r69259 = 8.0;
double r69260 = 3.0;
double r69261 = pow(r69242, r69260);
double r69262 = r69259 / r69261;
double r69263 = r69258 - r69262;
double r69264 = r69249 / r69242;
double r69265 = r69263 - r69264;
double r69266 = r69255 - r69265;
double r69267 = r69266 / r69249;
double r69268 = r69244 ? r69254 : r69267;
return r69268;
}



Bits error versus alpha



Bits error versus beta
if alpha < 8092481.162986399Initial program 0.1
rmApplied div-inv0.1
Applied fma-def0.1
if 8092481.162986399 < alpha Initial program 50.0
rmApplied div-sub49.9
Applied associate-+l-48.3
Taylor expanded around inf 18.4
Simplified18.4
Final simplification6.1
herbie shell --seed 2019323 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/1"
:precision binary64
:pre (and (> alpha -1) (> beta -1))
(/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2)) 1) 2))