\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{\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\mathsf{fma}\left(i, 2, \alpha + \beta\right)}, \frac{\alpha + \beta}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}} \cdot \frac{1}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}}, 1.0\right)}{2.0}double f(double alpha, double beta, double i) {
double r4506750 = alpha;
double r4506751 = beta;
double r4506752 = r4506750 + r4506751;
double r4506753 = r4506751 - r4506750;
double r4506754 = r4506752 * r4506753;
double r4506755 = 2.0;
double r4506756 = i;
double r4506757 = r4506755 * r4506756;
double r4506758 = r4506752 + r4506757;
double r4506759 = r4506754 / r4506758;
double r4506760 = 2.0;
double r4506761 = r4506758 + r4506760;
double r4506762 = r4506759 / r4506761;
double r4506763 = 1.0;
double r4506764 = r4506762 + r4506763;
double r4506765 = r4506764 / r4506760;
return r4506765;
}
double f(double alpha, double beta, double i) {
double r4506766 = beta;
double r4506767 = alpha;
double r4506768 = r4506766 - r4506767;
double r4506769 = 1.0;
double r4506770 = i;
double r4506771 = 2.0;
double r4506772 = r4506767 + r4506766;
double r4506773 = fma(r4506770, r4506771, r4506772);
double r4506774 = r4506769 / r4506773;
double r4506775 = r4506768 * r4506774;
double r4506776 = 2.0;
double r4506777 = r4506773 + r4506776;
double r4506778 = sqrt(r4506777);
double r4506779 = r4506772 / r4506778;
double r4506780 = r4506769 / r4506778;
double r4506781 = r4506779 * r4506780;
double r4506782 = 1.0;
double r4506783 = fma(r4506775, r4506781, r4506782);
double r4506784 = r4506783 / r4506776;
return r4506784;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 23.4
Simplified19.4
rmApplied add-log-exp19.5
Simplified12.1
rmApplied div-inv12.1
rmApplied rem-log-exp12.0
rmApplied add-sqr-sqrt12.1
Applied *-un-lft-identity12.1
Applied times-frac12.1
Final simplification12.1
herbie shell --seed 2019168 +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))