Average Error: 23.8 → 12.1
Time: 24.5s
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{\frac{\mathsf{fma}\left(2, i, \beta\right) + \alpha}{\alpha + \beta}}{\beta - \alpha}}, \frac{1}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}, 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{\frac{\mathsf{fma}\left(2, i, \beta\right) + \alpha}{\alpha + \beta}}{\beta - \alpha}}, \frac{1}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}, 1\right)}{2}
double f(double alpha, double beta, double i) {
        double r149684 = alpha;
        double r149685 = beta;
        double r149686 = r149684 + r149685;
        double r149687 = r149685 - r149684;
        double r149688 = r149686 * r149687;
        double r149689 = 2.0;
        double r149690 = i;
        double r149691 = r149689 * r149690;
        double r149692 = r149686 + r149691;
        double r149693 = r149688 / r149692;
        double r149694 = r149692 + r149689;
        double r149695 = r149693 / r149694;
        double r149696 = 1.0;
        double r149697 = r149695 + r149696;
        double r149698 = r149697 / r149689;
        return r149698;
}

double f(double alpha, double beta, double i) {
        double r149699 = 1.0;
        double r149700 = 2.0;
        double r149701 = i;
        double r149702 = beta;
        double r149703 = fma(r149700, r149701, r149702);
        double r149704 = alpha;
        double r149705 = r149703 + r149704;
        double r149706 = r149704 + r149702;
        double r149707 = r149705 / r149706;
        double r149708 = r149702 - r149704;
        double r149709 = r149707 / r149708;
        double r149710 = r149699 / r149709;
        double r149711 = r149700 * r149701;
        double r149712 = r149706 + r149711;
        double r149713 = r149712 + r149700;
        double r149714 = r149699 / r149713;
        double r149715 = 1.0;
        double r149716 = fma(r149710, r149714, r149715);
        double r149717 = r149716 / r149700;
        return r149717;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.8

    \[\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. Using strategy rm
  3. Applied clear-num23.8

    \[\leadsto \frac{\frac{\color{blue}{\frac{1}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\]
  4. Simplified12.0

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

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

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

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

Reproduce

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