Average Error: 24.1 → 12.6
Time: 20.7s
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{\mathsf{fma}\left(\frac{1}{\frac{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}{\beta - \alpha}}, \left(\alpha + \beta\right) \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\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{\mathsf{fma}\left(\frac{1}{\frac{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}{\beta - \alpha}}, \left(\alpha + \beta\right) \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\right)}{2}
double f(double alpha, double beta, double i) {
        double r64591 = alpha;
        double r64592 = beta;
        double r64593 = r64591 + r64592;
        double r64594 = r64592 - r64591;
        double r64595 = r64593 * r64594;
        double r64596 = 2.0;
        double r64597 = i;
        double r64598 = r64596 * r64597;
        double r64599 = r64593 + r64598;
        double r64600 = r64595 / r64599;
        double r64601 = r64599 + r64596;
        double r64602 = r64600 / r64601;
        double r64603 = 1.0;
        double r64604 = r64602 + r64603;
        double r64605 = r64604 / r64596;
        return r64605;
}

double f(double alpha, double beta, double i) {
        double r64606 = 1.0;
        double r64607 = 2.0;
        double r64608 = i;
        double r64609 = alpha;
        double r64610 = beta;
        double r64611 = r64609 + r64610;
        double r64612 = fma(r64607, r64608, r64611);
        double r64613 = r64612 + r64607;
        double r64614 = r64610 - r64609;
        double r64615 = r64613 / r64614;
        double r64616 = r64606 / r64615;
        double r64617 = r64606 / r64612;
        double r64618 = r64611 * r64617;
        double r64619 = 1.0;
        double r64620 = fma(r64616, r64618, r64619);
        double r64621 = r64620 / r64607;
        return r64621;
}

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. Simplified12.7

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

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

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

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

Reproduce

herbie shell --seed 2019325 +o rules:numerics
(FPCore (alpha beta i)
  :name "Octave 3.8, jcobi/2"
  :precision binary64
  :pre (and (> alpha -1) (> beta -1) (> i 0.0))
  (/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2)) 1) 2))