\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.0043840952888727 \cdot 10^{139}:\\
\;\;\;\;\frac{\frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2 \cdot 1}{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\alpha + \left(\beta + 3\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{\left(\frac{1}{\alpha} + \frac{1}{\beta}\right) - \frac{1}{{\alpha}^{2}}}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\alpha + \left(\beta + 3\right)}\\
\end{array}double f(double alpha, double beta) {
double r361957 = alpha;
double r361958 = beta;
double r361959 = r361957 + r361958;
double r361960 = r361958 * r361957;
double r361961 = r361959 + r361960;
double r361962 = 1.0;
double r361963 = r361961 + r361962;
double r361964 = 2.0;
double r361965 = r361964 * r361962;
double r361966 = r361959 + r361965;
double r361967 = r361963 / r361966;
double r361968 = r361967 / r361966;
double r361969 = r361966 + r361962;
double r361970 = r361968 / r361969;
return r361970;
}
double f(double alpha, double beta) {
double r361971 = alpha;
double r361972 = 1.0043840952888727e+139;
bool r361973 = r361971 <= r361972;
double r361974 = 1.0;
double r361975 = beta;
double r361976 = r361971 + r361975;
double r361977 = 2.0;
double r361978 = 1.0;
double r361979 = r361977 * r361978;
double r361980 = r361976 + r361979;
double r361981 = r361975 * r361971;
double r361982 = r361976 + r361981;
double r361983 = r361982 + r361978;
double r361984 = r361980 / r361983;
double r361985 = r361974 / r361984;
double r361986 = r361985 / r361980;
double r361987 = 3.0;
double r361988 = r361975 + r361987;
double r361989 = r361971 + r361988;
double r361990 = r361986 / r361989;
double r361991 = r361974 / r361971;
double r361992 = r361974 / r361975;
double r361993 = r361991 + r361992;
double r361994 = 2.0;
double r361995 = pow(r361971, r361994);
double r361996 = r361974 / r361995;
double r361997 = r361993 - r361996;
double r361998 = r361974 / r361997;
double r361999 = r361998 / r361980;
double r362000 = r361999 / r361989;
double r362001 = r361973 ? r361990 : r362000;
return r362001;
}



Bits error versus alpha



Bits error versus beta
Results
if alpha < 1.0043840952888727e+139Initial program 0.9
Taylor expanded around 0 0.9
Simplified0.9
rmApplied clear-num0.9
if 1.0043840952888727e+139 < alpha Initial program 15.4
Taylor expanded around 0 15.4
Simplified15.4
rmApplied clear-num15.4
Taylor expanded around inf 4.3
Final simplification1.5
herbie shell --seed 2020025
(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)))