Average Error: 16.2 → 5.9
Time: 5.1s
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 r150653 = beta;
        double r150654 = alpha;
        double r150655 = r150653 - r150654;
        double r150656 = r150654 + r150653;
        double r150657 = 2.0;
        double r150658 = r150656 + r150657;
        double r150659 = r150655 / r150658;
        double r150660 = 1.0;
        double r150661 = r150659 + r150660;
        double r150662 = r150661 / r150657;
        return r150662;
}

double f(double alpha, double beta) {
        double r150663 = alpha;
        double r150664 = 92108.89598052698;
        bool r150665 = r150663 <= r150664;
        double r150666 = beta;
        double r150667 = r150666 - r150663;
        double r150668 = 1.0;
        double r150669 = r150663 + r150666;
        double r150670 = 2.0;
        double r150671 = r150669 + r150670;
        double r150672 = r150668 / r150671;
        double r150673 = 1.0;
        double r150674 = fma(r150667, r150672, r150673);
        double r150675 = r150674 / r150670;
        double r150676 = r150666 / r150671;
        double r150677 = 4.0;
        double r150678 = 2.0;
        double r150679 = pow(r150663, r150678);
        double r150680 = r150668 / r150679;
        double r150681 = r150668 / r150663;
        double r150682 = 8.0;
        double r150683 = 3.0;
        double r150684 = pow(r150663, r150683);
        double r150685 = r150668 / r150684;
        double r150686 = r150682 * r150685;
        double r150687 = fma(r150670, r150681, r150686);
        double r150688 = -r150687;
        double r150689 = fma(r150677, r150680, r150688);
        double r150690 = r150676 - r150689;
        double r150691 = r150690 / r150670;
        double r150692 = r150665 ? r150675 : r150691;
        return r150692;
}

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