Average Error: 23.7 → 12.3
Time: 36.8s
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{\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}\]
\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;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.7

    \[\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.8

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

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

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

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

Reproduce

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