Average Error: 16.6 → 3.2
Time: 20.7s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1\]
\[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \le -0.9999815020213579375152335160237271338701:\\ \;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{4}{\alpha \cdot \alpha} - \left(\frac{2}{\alpha} + \frac{8}{{\alpha}^{3}}\right)\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{{\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)}^{3} + {1}^{3}}{\mathsf{fma}\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, 1 \cdot \left(1 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)\right)}}{2}\\ \end{array}\]
\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}
\begin{array}{l}
\mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \le -0.9999815020213579375152335160237271338701:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{4}{\alpha \cdot \alpha} - \left(\frac{2}{\alpha} + \frac{8}{{\alpha}^{3}}\right)\right)}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{{\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)}^{3} + {1}^{3}}{\mathsf{fma}\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, 1 \cdot \left(1 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)\right)}}{2}\\

\end{array}
double f(double alpha, double beta) {
        double r68006 = beta;
        double r68007 = alpha;
        double r68008 = r68006 - r68007;
        double r68009 = r68007 + r68006;
        double r68010 = 2.0;
        double r68011 = r68009 + r68010;
        double r68012 = r68008 / r68011;
        double r68013 = 1.0;
        double r68014 = r68012 + r68013;
        double r68015 = r68014 / r68010;
        return r68015;
}

double f(double alpha, double beta) {
        double r68016 = beta;
        double r68017 = alpha;
        double r68018 = r68016 - r68017;
        double r68019 = r68017 + r68016;
        double r68020 = 2.0;
        double r68021 = r68019 + r68020;
        double r68022 = r68018 / r68021;
        double r68023 = -0.9999815020213579;
        bool r68024 = r68022 <= r68023;
        double r68025 = r68016 / r68021;
        double r68026 = 4.0;
        double r68027 = r68017 * r68017;
        double r68028 = r68026 / r68027;
        double r68029 = r68020 / r68017;
        double r68030 = 8.0;
        double r68031 = 3.0;
        double r68032 = pow(r68017, r68031);
        double r68033 = r68030 / r68032;
        double r68034 = r68029 + r68033;
        double r68035 = r68028 - r68034;
        double r68036 = r68025 - r68035;
        double r68037 = r68036 / r68020;
        double r68038 = pow(r68022, r68031);
        double r68039 = 1.0;
        double r68040 = pow(r68039, r68031);
        double r68041 = r68038 + r68040;
        double r68042 = r68039 - r68022;
        double r68043 = r68039 * r68042;
        double r68044 = fma(r68022, r68022, r68043);
        double r68045 = r68041 / r68044;
        double r68046 = r68045 / r68020;
        double r68047 = r68024 ? r68037 : r68046;
        return r68047;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if (/ (- beta alpha) (+ (+ alpha beta) 2.0)) < -0.9999815020213579

    1. Initial program 59.5

      \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}\]
    2. Using strategy rm
    3. Applied div-sub59.4

      \[\leadsto \frac{\color{blue}{\left(\frac{\beta}{\left(\alpha + \beta\right) + 2} - \frac{\alpha}{\left(\alpha + \beta\right) + 2}\right)} + 1}{2}\]
    4. Applied associate-+l-57.6

      \[\leadsto \frac{\color{blue}{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2} - 1\right)}}{2}\]
    5. Taylor expanded around inf 11.4

      \[\leadsto \frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \color{blue}{\left(4 \cdot \frac{1}{{\alpha}^{2}} - \left(2 \cdot \frac{1}{\alpha} + 8 \cdot \frac{1}{{\alpha}^{3}}\right)\right)}}{2}\]
    6. Simplified11.4

      \[\leadsto \frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \color{blue}{\left(\frac{4}{\alpha \cdot \alpha} - \left(\frac{2}{\alpha} + \frac{8}{{\alpha}^{3}}\right)\right)}}{2}\]

    if -0.9999815020213579 < (/ (- beta alpha) (+ (+ alpha beta) 2.0))

    1. Initial program 0.0

      \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}\]
    2. Using strategy rm
    3. Applied flip3-+0.1

      \[\leadsto \frac{\color{blue}{\frac{{\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)}^{3} + {1}^{3}}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + \left(1 \cdot 1 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \cdot 1\right)}}}{2}\]
    4. Simplified0.1

      \[\leadsto \frac{\frac{{\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)}^{3} + {1}^{3}}{\color{blue}{\mathsf{fma}\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, 1 \cdot \left(1 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)\right)}}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \le -0.9999815020213579375152335160237271338701:\\ \;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{4}{\alpha \cdot \alpha} - \left(\frac{2}{\alpha} + \frac{8}{{\alpha}^{3}}\right)\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{{\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)}^{3} + {1}^{3}}{\mathsf{fma}\left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}, 1 \cdot \left(1 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2}\right)\right)}}{2}\\ \end{array}\]

Reproduce

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