\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{1.0 + \frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0} \cdot \frac{\alpha + \beta}{\mathsf{fma}\left(i, 2, \alpha + \beta\right)}}{2.0}double f(double alpha, double beta, double i) {
double r4244641 = alpha;
double r4244642 = beta;
double r4244643 = r4244641 + r4244642;
double r4244644 = r4244642 - r4244641;
double r4244645 = r4244643 * r4244644;
double r4244646 = 2.0;
double r4244647 = i;
double r4244648 = r4244646 * r4244647;
double r4244649 = r4244643 + r4244648;
double r4244650 = r4244645 / r4244649;
double r4244651 = 2.0;
double r4244652 = r4244649 + r4244651;
double r4244653 = r4244650 / r4244652;
double r4244654 = 1.0;
double r4244655 = r4244653 + r4244654;
double r4244656 = r4244655 / r4244651;
return r4244656;
}
double f(double alpha, double beta, double i) {
double r4244657 = 1.0;
double r4244658 = beta;
double r4244659 = alpha;
double r4244660 = r4244658 - r4244659;
double r4244661 = i;
double r4244662 = 2.0;
double r4244663 = r4244659 + r4244658;
double r4244664 = fma(r4244661, r4244662, r4244663);
double r4244665 = 2.0;
double r4244666 = r4244664 + r4244665;
double r4244667 = r4244660 / r4244666;
double r4244668 = r4244663 / r4244664;
double r4244669 = r4244667 * r4244668;
double r4244670 = r4244657 + r4244669;
double r4244671 = r4244670 / r4244665;
return r4244671;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 23.7
Simplified19.8
rmApplied fma-udef19.8
Simplified12.3
Final simplification12.3
herbie shell --seed 2019164 +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))