\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{1 + \frac{\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha + \beta\right)} \cdot \left(\alpha + \beta\right)}{2 + \mathsf{fma}\left(2, i, \alpha + \beta\right)}}{2}double f(double alpha, double beta, double i) {
double r4353370 = alpha;
double r4353371 = beta;
double r4353372 = r4353370 + r4353371;
double r4353373 = r4353371 - r4353370;
double r4353374 = r4353372 * r4353373;
double r4353375 = 2.0;
double r4353376 = i;
double r4353377 = r4353375 * r4353376;
double r4353378 = r4353372 + r4353377;
double r4353379 = r4353374 / r4353378;
double r4353380 = r4353378 + r4353375;
double r4353381 = r4353379 / r4353380;
double r4353382 = 1.0;
double r4353383 = r4353381 + r4353382;
double r4353384 = r4353383 / r4353375;
return r4353384;
}
double f(double alpha, double beta, double i) {
double r4353385 = 1.0;
double r4353386 = beta;
double r4353387 = alpha;
double r4353388 = r4353386 - r4353387;
double r4353389 = 2.0;
double r4353390 = i;
double r4353391 = r4353387 + r4353386;
double r4353392 = fma(r4353389, r4353390, r4353391);
double r4353393 = r4353388 / r4353392;
double r4353394 = r4353393 * r4353391;
double r4353395 = r4353389 + r4353392;
double r4353396 = r4353394 / r4353395;
double r4353397 = r4353385 + r4353396;
double r4353398 = r4353397 / r4353389;
return r4353398;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 24.1
Simplified19.9
rmApplied associate-/r*12.8
rmApplied fma-udef12.7
rmApplied associate-*l/12.7
Final simplification12.7
herbie shell --seed 2019169 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:pre (and (> alpha -1.0) (> beta -1.0) (> i 0.0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2.0 i))) (+ (+ (+ alpha beta) (* 2.0 i)) 2.0)) 1.0) 2.0))