Average Error: 23.5 → 12.1
Time: 37.6s
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{\mathsf{fma}\left(\left(\frac{1}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right)}\right), \left(\frac{\frac{\alpha + \beta}{2.0 + \mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right)}}{\frac{1}{\beta - \alpha}}\right), 1.0\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{\mathsf{fma}\left(\left(\frac{1}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right)}\right), \left(\frac{\frac{\alpha + \beta}{2.0 + \mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right)}}{\frac{1}{\beta - \alpha}}\right), 1.0\right)}{2.0}
double f(double alpha, double beta, double i) {
        double r3747672 = alpha;
        double r3747673 = beta;
        double r3747674 = r3747672 + r3747673;
        double r3747675 = r3747673 - r3747672;
        double r3747676 = r3747674 * r3747675;
        double r3747677 = 2.0;
        double r3747678 = i;
        double r3747679 = r3747677 * r3747678;
        double r3747680 = r3747674 + r3747679;
        double r3747681 = r3747676 / r3747680;
        double r3747682 = 2.0;
        double r3747683 = r3747680 + r3747682;
        double r3747684 = r3747681 / r3747683;
        double r3747685 = 1.0;
        double r3747686 = r3747684 + r3747685;
        double r3747687 = r3747686 / r3747682;
        return r3747687;
}

double f(double alpha, double beta, double i) {
        double r3747688 = 1.0;
        double r3747689 = 2.0;
        double r3747690 = i;
        double r3747691 = alpha;
        double r3747692 = beta;
        double r3747693 = r3747691 + r3747692;
        double r3747694 = fma(r3747689, r3747690, r3747693);
        double r3747695 = r3747688 / r3747694;
        double r3747696 = 2.0;
        double r3747697 = r3747696 + r3747694;
        double r3747698 = r3747693 / r3747697;
        double r3747699 = r3747692 - r3747691;
        double r3747700 = r3747688 / r3747699;
        double r3747701 = r3747698 / r3747700;
        double r3747702 = 1.0;
        double r3747703 = fma(r3747695, r3747701, r3747702);
        double r3747704 = r3747703 / r3747696;
        return r3747704;
}

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

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

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

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

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

    \[\leadsto \frac{\frac{\frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right) + 2.0}}{\color{blue}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right) \cdot \frac{1}{\beta - \alpha}}} + 1.0}{2.0}\]
  10. Applied *-un-lft-identity12.1

    \[\leadsto \frac{\frac{\color{blue}{1 \cdot \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right) + 2.0}}}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right) \cdot \frac{1}{\beta - \alpha}} + 1.0}{2.0}\]
  11. Applied times-frac12.0

    \[\leadsto \frac{\color{blue}{\frac{1}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right)} \cdot \frac{\frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \left(\alpha + \beta\right)\right) + 2.0}}{\frac{1}{\beta - \alpha}}} + 1.0}{2.0}\]
  12. Applied fma-def12.1

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

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

Reproduce

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