Average Error: 24.1 → 12.7
Time: 27.0s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1 \land i \gt 0.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} + 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}\]
\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;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 24.1

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

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

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

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

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

    \[\leadsto \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}\]

Reproduce

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))