Average Error: 16.5 → 6.1
Time: 16.2s
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}\;\alpha \le 8092481.162986398674547672271728515625:\\ \;\;\;\;\frac{\mathsf{fma}\left(\beta - \alpha, \frac{1}{\left(\alpha + \beta\right) + 2}, 1\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\left(\frac{4}{\alpha \cdot \alpha} - \frac{8}{{\alpha}^{3}}\right) - \frac{2}{\alpha}\right)}{2}\\ \end{array}\]
\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}
\begin{array}{l}
\mathbf{if}\;\alpha \le 8092481.162986398674547672271728515625:\\
\;\;\;\;\frac{\mathsf{fma}\left(\beta - \alpha, \frac{1}{\left(\alpha + \beta\right) + 2}, 1\right)}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\left(\frac{4}{\alpha \cdot \alpha} - \frac{8}{{\alpha}^{3}}\right) - \frac{2}{\alpha}\right)}{2}\\

\end{array}
double f(double alpha, double beta) {
        double r69232 = beta;
        double r69233 = alpha;
        double r69234 = r69232 - r69233;
        double r69235 = r69233 + r69232;
        double r69236 = 2.0;
        double r69237 = r69235 + r69236;
        double r69238 = r69234 / r69237;
        double r69239 = 1.0;
        double r69240 = r69238 + r69239;
        double r69241 = r69240 / r69236;
        return r69241;
}

double f(double alpha, double beta) {
        double r69242 = alpha;
        double r69243 = 8092481.162986399;
        bool r69244 = r69242 <= r69243;
        double r69245 = beta;
        double r69246 = r69245 - r69242;
        double r69247 = 1.0;
        double r69248 = r69242 + r69245;
        double r69249 = 2.0;
        double r69250 = r69248 + r69249;
        double r69251 = r69247 / r69250;
        double r69252 = 1.0;
        double r69253 = fma(r69246, r69251, r69252);
        double r69254 = r69253 / r69249;
        double r69255 = r69245 / r69250;
        double r69256 = 4.0;
        double r69257 = r69242 * r69242;
        double r69258 = r69256 / r69257;
        double r69259 = 8.0;
        double r69260 = 3.0;
        double r69261 = pow(r69242, r69260);
        double r69262 = r69259 / r69261;
        double r69263 = r69258 - r69262;
        double r69264 = r69249 / r69242;
        double r69265 = r69263 - r69264;
        double r69266 = r69255 - r69265;
        double r69267 = r69266 / r69249;
        double r69268 = r69244 ? r69254 : r69267;
        return r69268;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 8092481.162986399

    1. Initial program 0.1

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

      \[\leadsto \frac{\color{blue}{\left(\beta - \alpha\right) \cdot \frac{1}{\left(\alpha + \beta\right) + 2}} + 1}{2}\]
    4. Applied fma-def0.1

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

    if 8092481.162986399 < alpha

    1. Initial program 50.0

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

      \[\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-48.3

      \[\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 18.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. Simplified18.4

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

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

Reproduce

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