\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}\frac{\log \left(e^{\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}, \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\right)}\right)}{2}double f(double alpha, double beta, double i) {
double r71872 = alpha;
double r71873 = beta;
double r71874 = r71872 + r71873;
double r71875 = r71873 - r71872;
double r71876 = r71874 * r71875;
double r71877 = 2.0;
double r71878 = i;
double r71879 = r71877 * r71878;
double r71880 = r71874 + r71879;
double r71881 = r71876 / r71880;
double r71882 = r71880 + r71877;
double r71883 = r71881 / r71882;
double r71884 = 1.0;
double r71885 = r71883 + r71884;
double r71886 = r71885 / r71877;
return r71886;
}
double f(double alpha, double beta, double i) {
double r71887 = beta;
double r71888 = alpha;
double r71889 = r71887 - r71888;
double r71890 = 2.0;
double r71891 = i;
double r71892 = r71888 + r71887;
double r71893 = fma(r71890, r71891, r71892);
double r71894 = r71893 + r71890;
double r71895 = r71889 / r71894;
double r71896 = r71892 / r71893;
double r71897 = 1.0;
double r71898 = fma(r71895, r71896, r71897);
double r71899 = exp(r71898);
double r71900 = log(r71899);
double r71901 = r71900 / r71890;
return r71901;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 23.9
Simplified12.1
rmApplied add-log-exp12.1
Final simplification12.1
herbie shell --seed 2019323 +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))