Average Error: 16.4 → 6.3
Time: 22.0s
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 337398417361397.5625:\\ \;\;\;\;\frac{\mathsf{fma}\left(\beta, \frac{1}{\left(\beta + \alpha\right) + 2}, -\left(\frac{\alpha}{\left(\beta + \alpha\right) + 2} - 1\right)\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\beta}{\left(\beta + \alpha\right) + 2} - \left(\left(\frac{\frac{4}{\alpha}}{\alpha} - \frac{\frac{8}{\alpha \cdot \alpha}}{\alpha}\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 337398417361397.5625:\\
\;\;\;\;\frac{\mathsf{fma}\left(\beta, \frac{1}{\left(\beta + \alpha\right) + 2}, -\left(\frac{\alpha}{\left(\beta + \alpha\right) + 2} - 1\right)\right)}{2}\\

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

\end{array}
double f(double alpha, double beta) {
        double r3753227 = beta;
        double r3753228 = alpha;
        double r3753229 = r3753227 - r3753228;
        double r3753230 = r3753228 + r3753227;
        double r3753231 = 2.0;
        double r3753232 = r3753230 + r3753231;
        double r3753233 = r3753229 / r3753232;
        double r3753234 = 1.0;
        double r3753235 = r3753233 + r3753234;
        double r3753236 = r3753235 / r3753231;
        return r3753236;
}

double f(double alpha, double beta) {
        double r3753237 = alpha;
        double r3753238 = 337398417361397.56;
        bool r3753239 = r3753237 <= r3753238;
        double r3753240 = beta;
        double r3753241 = 1.0;
        double r3753242 = r3753240 + r3753237;
        double r3753243 = 2.0;
        double r3753244 = r3753242 + r3753243;
        double r3753245 = r3753241 / r3753244;
        double r3753246 = r3753237 / r3753244;
        double r3753247 = 1.0;
        double r3753248 = r3753246 - r3753247;
        double r3753249 = -r3753248;
        double r3753250 = fma(r3753240, r3753245, r3753249);
        double r3753251 = r3753250 / r3753243;
        double r3753252 = r3753240 / r3753244;
        double r3753253 = 4.0;
        double r3753254 = r3753253 / r3753237;
        double r3753255 = r3753254 / r3753237;
        double r3753256 = 8.0;
        double r3753257 = r3753237 * r3753237;
        double r3753258 = r3753256 / r3753257;
        double r3753259 = r3753258 / r3753237;
        double r3753260 = r3753255 - r3753259;
        double r3753261 = r3753243 / r3753237;
        double r3753262 = r3753260 - r3753261;
        double r3753263 = r3753252 - r3753262;
        double r3753264 = r3753263 / r3753243;
        double r3753265 = r3753239 ? r3753251 : r3753264;
        return r3753265;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

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

    1. Initial program 0.3

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

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

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

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

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

    if 337398417361397.56 < alpha

    1. Initial program 50.1

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

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

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

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

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

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

Reproduce

herbie shell --seed 2019192 +o rules:numerics
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/1"
  :pre (and (> alpha -1.0) (> beta -1.0))
  (/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0))