\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.0} + 1.0}{2.0}\frac{\frac{e^{\log \left(\log \left(e^{\mathsf{fma}\left(\frac{\alpha + \beta}{\left(\mathsf{fma}\left(i, 2, \alpha\right) + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha\right) + \beta}, \left(\frac{\alpha + \beta}{\left(\mathsf{fma}\left(i, 2, \alpha\right) + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha\right) + \beta}\right) \cdot \left(\frac{\alpha + \beta}{\left(\mathsf{fma}\left(i, 2, \alpha\right) + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha\right) + \beta}\right), \left(1.0 \cdot 1.0\right) \cdot 1.0\right)}\right)\right)}}{\mathsf{fma}\left(1.0, 1.0, \left(\frac{\alpha + \beta}{\left(\mathsf{fma}\left(i, 2, \alpha\right) + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha\right) + \beta}\right) \cdot \left(\frac{\alpha + \beta}{\left(\mathsf{fma}\left(i, 2, \alpha\right) + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha\right) + \beta} - 1.0\right)\right)}}{2.0}double f(double alpha, double beta, double i) {
double r3005929 = alpha;
double r3005930 = beta;
double r3005931 = r3005929 + r3005930;
double r3005932 = r3005930 - r3005929;
double r3005933 = r3005931 * r3005932;
double r3005934 = 2.0;
double r3005935 = i;
double r3005936 = r3005934 * r3005935;
double r3005937 = r3005931 + r3005936;
double r3005938 = r3005933 / r3005937;
double r3005939 = 2.0;
double r3005940 = r3005937 + r3005939;
double r3005941 = r3005938 / r3005940;
double r3005942 = 1.0;
double r3005943 = r3005941 + r3005942;
double r3005944 = r3005943 / r3005939;
return r3005944;
}
double f(double alpha, double beta, double i) {
double r3005945 = alpha;
double r3005946 = beta;
double r3005947 = r3005945 + r3005946;
double r3005948 = i;
double r3005949 = 2.0;
double r3005950 = fma(r3005948, r3005949, r3005945);
double r3005951 = r3005950 + r3005946;
double r3005952 = 2.0;
double r3005953 = r3005951 + r3005952;
double r3005954 = r3005947 / r3005953;
double r3005955 = r3005946 - r3005945;
double r3005956 = r3005955 / r3005951;
double r3005957 = r3005954 * r3005956;
double r3005958 = r3005957 * r3005957;
double r3005959 = 1.0;
double r3005960 = r3005959 * r3005959;
double r3005961 = r3005960 * r3005959;
double r3005962 = fma(r3005957, r3005958, r3005961);
double r3005963 = exp(r3005962);
double r3005964 = log(r3005963);
double r3005965 = log(r3005964);
double r3005966 = exp(r3005965);
double r3005967 = r3005957 - r3005959;
double r3005968 = r3005957 * r3005967;
double r3005969 = fma(r3005959, r3005959, r3005968);
double r3005970 = r3005966 / r3005969;
double r3005971 = r3005970 / r3005952;
return r3005971;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 23.5
Simplified23.4
rmApplied flip3-+23.4
Simplified23.4
Simplified12.3
rmApplied add-log-exp12.3
rmApplied add-exp-log12.3
Final simplification12.3
herbie shell --seed 2019144 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:pre (and (> alpha -1) (> beta -1) (> i 0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2.0)) 1.0) 2.0))