Average Error: 23.5 → 12.2
Time: 21.9s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1 \land i \gt 0\]
\[\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{\left(\beta - \alpha\right) \cdot \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2.0}}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}}{2.0}\]
\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{\left(\beta - \alpha\right) \cdot \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2.0}}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}}{2.0}
double f(double alpha, double beta, double i) {
        double r5176264 = alpha;
        double r5176265 = beta;
        double r5176266 = r5176264 + r5176265;
        double r5176267 = r5176265 - r5176264;
        double r5176268 = r5176266 * r5176267;
        double r5176269 = 2.0;
        double r5176270 = i;
        double r5176271 = r5176269 * r5176270;
        double r5176272 = r5176266 + r5176271;
        double r5176273 = r5176268 / r5176272;
        double r5176274 = 2.0;
        double r5176275 = r5176272 + r5176274;
        double r5176276 = r5176273 / r5176275;
        double r5176277 = 1.0;
        double r5176278 = r5176276 + r5176277;
        double r5176279 = r5176278 / r5176274;
        return r5176279;
}

double f(double alpha, double beta, double i) {
        double r5176280 = 1.0;
        double r5176281 = beta;
        double r5176282 = alpha;
        double r5176283 = r5176281 - r5176282;
        double r5176284 = r5176282 + r5176281;
        double r5176285 = 2.0;
        double r5176286 = i;
        double r5176287 = fma(r5176285, r5176286, r5176284);
        double r5176288 = 2.0;
        double r5176289 = r5176287 + r5176288;
        double r5176290 = r5176284 / r5176289;
        double r5176291 = r5176283 * r5176290;
        double r5176292 = r5176291 / r5176287;
        double r5176293 = r5176280 + r5176292;
        double r5176294 = r5176293 / r5176288;
        return r5176294;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.5

    \[\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}\]
  2. Simplified19.5

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\beta - \alpha, \frac{\beta + \alpha}{\left(2.0 + \mathsf{fma}\left(2, i, \beta + \alpha\right)\right) \cdot \mathsf{fma}\left(2, i, \beta + \alpha\right)}, 1.0\right)}{2.0}}\]
  3. Using strategy rm
  4. Applied associate-/r*12.3

    \[\leadsto \frac{\mathsf{fma}\left(\beta - \alpha, \color{blue}{\frac{\frac{\beta + \alpha}{2.0 + \mathsf{fma}\left(2, i, \beta + \alpha\right)}}{\mathsf{fma}\left(2, i, \beta + \alpha\right)}}, 1.0\right)}{2.0}\]
  5. Using strategy rm
  6. Applied fma-udef12.2

    \[\leadsto \frac{\color{blue}{\left(\beta - \alpha\right) \cdot \frac{\frac{\beta + \alpha}{2.0 + \mathsf{fma}\left(2, i, \beta + \alpha\right)}}{\mathsf{fma}\left(2, i, \beta + \alpha\right)} + 1.0}}{2.0}\]
  7. Using strategy rm
  8. Applied associate-*r/12.2

    \[\leadsto \frac{\color{blue}{\frac{\left(\beta - \alpha\right) \cdot \frac{\beta + \alpha}{2.0 + \mathsf{fma}\left(2, i, \beta + \alpha\right)}}{\mathsf{fma}\left(2, i, \beta + \alpha\right)}} + 1.0}{2.0}\]
  9. Final simplification12.2

    \[\leadsto \frac{1.0 + \frac{\left(\beta - \alpha\right) \cdot \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2.0}}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}}{2.0}\]

Reproduce

herbie shell --seed 2019165 +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))