Average Error: 15.7 → 3.4
Time: 10.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}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \le -1:\\ \;\;\;\;\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}\\ \mathbf{else}:\\ \;\;\;\;\frac{e^{\log \left(\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2} - 1\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 -1:\\
\;\;\;\;\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}\\

\mathbf{else}:\\
\;\;\;\;\frac{e^{\log \left(\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2} - 1\right)\right)}}{2}\\

\end{array}
double f(double alpha, double beta) {
        double r126425 = beta;
        double r126426 = alpha;
        double r126427 = r126425 - r126426;
        double r126428 = r126426 + r126425;
        double r126429 = 2.0;
        double r126430 = r126428 + r126429;
        double r126431 = r126427 / r126430;
        double r126432 = 1.0;
        double r126433 = r126431 + r126432;
        double r126434 = r126433 / r126429;
        return r126434;
}

double f(double alpha, double beta) {
        double r126435 = beta;
        double r126436 = alpha;
        double r126437 = r126435 - r126436;
        double r126438 = r126436 + r126435;
        double r126439 = 2.0;
        double r126440 = r126438 + r126439;
        double r126441 = r126437 / r126440;
        double r126442 = -1.0;
        bool r126443 = r126441 <= r126442;
        double r126444 = r126435 / r126440;
        double r126445 = 4.0;
        double r126446 = 1.0;
        double r126447 = 2.0;
        double r126448 = pow(r126436, r126447);
        double r126449 = r126446 / r126448;
        double r126450 = r126446 / r126436;
        double r126451 = 8.0;
        double r126452 = 3.0;
        double r126453 = pow(r126436, r126452);
        double r126454 = r126446 / r126453;
        double r126455 = r126451 * r126454;
        double r126456 = fma(r126439, r126450, r126455);
        double r126457 = -r126456;
        double r126458 = fma(r126445, r126449, r126457);
        double r126459 = r126444 - r126458;
        double r126460 = r126459 / r126439;
        double r126461 = r126436 / r126440;
        double r126462 = 1.0;
        double r126463 = r126461 - r126462;
        double r126464 = r126444 - r126463;
        double r126465 = log(r126464);
        double r126466 = exp(r126465);
        double r126467 = r126466 / r126439;
        double r126468 = r126443 ? r126460 : r126467;
        return r126468;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

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

    1. Initial program 60.7

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

      \[\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-58.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.8

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

      \[\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}\]

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

    1. Initial program 0.6

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

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

      \[\leadsto \frac{\color{blue}{\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2} - 1\right)}}{2}\]
    5. Using strategy rm
    6. Applied add-exp-log0.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} \le -1:\\ \;\;\;\;\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}\\ \mathbf{else}:\\ \;\;\;\;\frac{e^{\log \left(\frac{\beta}{\left(\alpha + \beta\right) + 2} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2} - 1\right)\right)}}{2}\\ \end{array}\]

Reproduce

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