Average Error: 24.1 → 12.6
Time: 21.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{\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 r116891 = alpha;
        double r116892 = beta;
        double r116893 = r116891 + r116892;
        double r116894 = r116892 - r116891;
        double r116895 = r116893 * r116894;
        double r116896 = 2.0;
        double r116897 = i;
        double r116898 = r116896 * r116897;
        double r116899 = r116893 + r116898;
        double r116900 = r116895 / r116899;
        double r116901 = r116899 + r116896;
        double r116902 = r116900 / r116901;
        double r116903 = 1.0;
        double r116904 = r116902 + r116903;
        double r116905 = r116904 / r116896;
        return r116905;
}

double f(double alpha, double beta, double i) {
        double r116906 = 1.0;
        double r116907 = 2.0;
        double r116908 = i;
        double r116909 = alpha;
        double r116910 = beta;
        double r116911 = r116909 + r116910;
        double r116912 = fma(r116907, r116908, r116911);
        double r116913 = r116912 + r116907;
        double r116914 = r116910 - r116909;
        double r116915 = r116913 / r116914;
        double r116916 = r116906 / r116915;
        double r116917 = r116906 / r116912;
        double r116918 = r116911 * r116917;
        double r116919 = 1.0;
        double r116920 = fma(r116916, r116918, r116919);
        double r116921 = r116920 / r116907;
        return r116921;
}

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