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

\end{array}
double f(double alpha, double beta) {
        double r97378 = beta;
        double r97379 = alpha;
        double r97380 = r97378 - r97379;
        double r97381 = r97379 + r97378;
        double r97382 = 2.0;
        double r97383 = r97381 + r97382;
        double r97384 = r97380 / r97383;
        double r97385 = 1.0;
        double r97386 = r97384 + r97385;
        double r97387 = r97386 / r97382;
        return r97387;
}

double f(double alpha, double beta) {
        double r97388 = alpha;
        double r97389 = 92108.89598052698;
        bool r97390 = r97388 <= r97389;
        double r97391 = beta;
        double r97392 = r97391 - r97388;
        double r97393 = 1.0;
        double r97394 = r97388 + r97391;
        double r97395 = 2.0;
        double r97396 = r97394 + r97395;
        double r97397 = r97393 / r97396;
        double r97398 = 1.0;
        double r97399 = fma(r97392, r97397, r97398);
        double r97400 = r97399 / r97395;
        double r97401 = r97391 / r97396;
        double r97402 = 4.0;
        double r97403 = 2.0;
        double r97404 = pow(r97388, r97403);
        double r97405 = r97393 / r97404;
        double r97406 = r97393 / r97388;
        double r97407 = 8.0;
        double r97408 = 3.0;
        double r97409 = pow(r97388, r97408);
        double r97410 = r97393 / r97409;
        double r97411 = r97407 * r97410;
        double r97412 = fma(r97395, r97406, r97411);
        double r97413 = -r97412;
        double r97414 = fma(r97402, r97405, r97413);
        double r97415 = r97401 - r97414;
        double r97416 = r97415 / r97395;
        double r97417 = r97390 ? r97400 : r97416;
        return r97417;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

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

    1. Initial program 0.0

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

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

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

    if 92108.89598052698 < alpha

    1. Initial program 50.0

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

      \[\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.3

      \[\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.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 92108.895980526984:\\ \;\;\;\;\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} - \mathsf{fma}\left(4, \frac{1}{{\alpha}^{2}}, -\mathsf{fma}\left(2, \frac{1}{\alpha}, 8 \cdot \frac{1}{{\alpha}^{3}}\right)\right)}{2}\\ \end{array}\]

Reproduce

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