\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.149511021677558287843896138834759967294 \cdot 10^{213}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\frac{1 + \mathsf{fma}\left(\beta, \alpha, \alpha + \beta\right)}{\mathsf{fma}\left(2, 1, \alpha + \beta\right)}}{\mathsf{fma}\left(2, 1, \alpha + \beta\right)}\right)\right)}{1 + \mathsf{fma}\left(2, 1, \alpha + \beta\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\beta, \sqrt{0.5}, \left(1 + \alpha\right) \cdot \sqrt{0.5}\right) - \mathsf{fma}\left(0.125, \frac{\alpha}{\sqrt{0.5}}, \sqrt{0.125} \cdot \left(0.5 \cdot \beta\right)\right)}{\mathsf{fma}\left(2, 1, \alpha + \beta\right)}}{\sqrt{1 + \mathsf{fma}\left(2, 1, \alpha + \beta\right)}} \cdot \frac{1}{\sqrt{\mathsf{fma}\left(2, 1, \alpha + \beta\right)} \cdot \sqrt{1 + \mathsf{fma}\left(2, 1, \alpha + \beta\right)}}\\
\end{array}double f(double alpha, double beta) {
double r3583917 = alpha;
double r3583918 = beta;
double r3583919 = r3583917 + r3583918;
double r3583920 = r3583918 * r3583917;
double r3583921 = r3583919 + r3583920;
double r3583922 = 1.0;
double r3583923 = r3583921 + r3583922;
double r3583924 = 2.0;
double r3583925 = r3583924 * r3583922;
double r3583926 = r3583919 + r3583925;
double r3583927 = r3583923 / r3583926;
double r3583928 = r3583927 / r3583926;
double r3583929 = r3583926 + r3583922;
double r3583930 = r3583928 / r3583929;
return r3583930;
}
double f(double alpha, double beta) {
double r3583931 = alpha;
double r3583932 = 1.1495110216775583e+213;
bool r3583933 = r3583931 <= r3583932;
double r3583934 = 1.0;
double r3583935 = beta;
double r3583936 = r3583931 + r3583935;
double r3583937 = fma(r3583935, r3583931, r3583936);
double r3583938 = r3583934 + r3583937;
double r3583939 = 2.0;
double r3583940 = fma(r3583939, r3583934, r3583936);
double r3583941 = r3583938 / r3583940;
double r3583942 = r3583941 / r3583940;
double r3583943 = expm1(r3583942);
double r3583944 = log1p(r3583943);
double r3583945 = r3583934 + r3583940;
double r3583946 = r3583944 / r3583945;
double r3583947 = 0.5;
double r3583948 = sqrt(r3583947);
double r3583949 = r3583934 + r3583931;
double r3583950 = r3583949 * r3583948;
double r3583951 = fma(r3583935, r3583948, r3583950);
double r3583952 = 0.125;
double r3583953 = r3583931 / r3583948;
double r3583954 = sqrt(r3583952);
double r3583955 = r3583947 * r3583935;
double r3583956 = r3583954 * r3583955;
double r3583957 = fma(r3583952, r3583953, r3583956);
double r3583958 = r3583951 - r3583957;
double r3583959 = r3583958 / r3583940;
double r3583960 = sqrt(r3583945);
double r3583961 = r3583959 / r3583960;
double r3583962 = 1.0;
double r3583963 = sqrt(r3583940);
double r3583964 = r3583963 * r3583960;
double r3583965 = r3583962 / r3583964;
double r3583966 = r3583961 * r3583965;
double r3583967 = r3583933 ? r3583946 : r3583966;
return r3583967;
}



Bits error versus alpha



Bits error versus beta
if alpha < 1.1495110216775583e+213Initial program 1.8
Simplified1.8
rmApplied log1p-expm1-u1.8
if 1.1495110216775583e+213 < alpha Initial program 18.0
Simplified18.0
rmApplied add-sqr-sqrt18.0
Applied *-un-lft-identity18.0
Applied add-sqr-sqrt18.0
Applied *-un-lft-identity18.0
Applied times-frac18.0
Applied times-frac18.0
Applied times-frac18.0
Simplified18.0
Taylor expanded around 0 5.4
Simplified5.4
Final simplification2.2
herbie shell --seed 2019171 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:pre (and (> alpha -1.0) (> beta -1.0))
(/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ (+ alpha beta) (* 2.0 1.0)) 1.0)))