\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\begin{array}{l}
\mathbf{if}\;\alpha \le 2.2383019899999203 \cdot 10^{113}:\\
\;\;\;\;\frac{e^{\log \left(\mathsf{fma}\left(\frac{1}{\frac{\frac{\mathsf{fma}\left(2, i, \beta\right) + \alpha}{\alpha + \beta}}{\beta - \alpha}}, \frac{1}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}, 1\right)\right)}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(2, \frac{1}{\alpha}, 8 \cdot \frac{1}{{\alpha}^{3}} - 4 \cdot \frac{1}{{\alpha}^{2}}\right)}{2}\\
\end{array}double f(double alpha, double beta, double i) {
double r137841 = alpha;
double r137842 = beta;
double r137843 = r137841 + r137842;
double r137844 = r137842 - r137841;
double r137845 = r137843 * r137844;
double r137846 = 2.0;
double r137847 = i;
double r137848 = r137846 * r137847;
double r137849 = r137843 + r137848;
double r137850 = r137845 / r137849;
double r137851 = r137849 + r137846;
double r137852 = r137850 / r137851;
double r137853 = 1.0;
double r137854 = r137852 + r137853;
double r137855 = r137854 / r137846;
return r137855;
}
double f(double alpha, double beta, double i) {
double r137856 = alpha;
double r137857 = 2.2383019899999203e+113;
bool r137858 = r137856 <= r137857;
double r137859 = 1.0;
double r137860 = 2.0;
double r137861 = i;
double r137862 = beta;
double r137863 = fma(r137860, r137861, r137862);
double r137864 = r137863 + r137856;
double r137865 = r137856 + r137862;
double r137866 = r137864 / r137865;
double r137867 = r137862 - r137856;
double r137868 = r137866 / r137867;
double r137869 = r137859 / r137868;
double r137870 = r137860 * r137861;
double r137871 = r137865 + r137870;
double r137872 = r137871 + r137860;
double r137873 = r137859 / r137872;
double r137874 = 1.0;
double r137875 = fma(r137869, r137873, r137874);
double r137876 = log(r137875);
double r137877 = exp(r137876);
double r137878 = r137877 / r137860;
double r137879 = r137859 / r137856;
double r137880 = 8.0;
double r137881 = 3.0;
double r137882 = pow(r137856, r137881);
double r137883 = r137859 / r137882;
double r137884 = r137880 * r137883;
double r137885 = 4.0;
double r137886 = 2.0;
double r137887 = pow(r137856, r137886);
double r137888 = r137859 / r137887;
double r137889 = r137885 * r137888;
double r137890 = r137884 - r137889;
double r137891 = fma(r137860, r137879, r137890);
double r137892 = r137891 / r137860;
double r137893 = r137858 ? r137878 : r137892;
return r137893;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
if alpha < 2.2383019899999203e+113Initial program 14.6
rmApplied clear-num14.6
Simplified3.8
rmApplied div-inv3.8
Applied fma-def3.8
rmApplied add-exp-log3.8
if 2.2383019899999203e+113 < alpha Initial program 60.5
Taylor expanded around inf 41.4
Simplified41.4
Final simplification11.6
herbie shell --seed 2020020 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:precision binary64
:pre (and (> alpha -1) (> beta -1) (> i 0.0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2)) 1) 2))