Average Error: 15.8 → 3.0
Time: 27.7s
Precision: 64
\[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \le -0.9999999999983659:\\ \;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\left(\frac{4.0}{\alpha \cdot \alpha} - \frac{2.0}{\alpha}\right) - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\right)}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(e^{1.0 + \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0}}\right)}{2.0}\\ \end{array}\]
double f(double alpha, double beta) {
        double r8128248 = beta;
        double r8128249 = alpha;
        double r8128250 = r8128248 - r8128249;
        double r8128251 = r8128249 + r8128248;
        double r8128252 = 2.0;
        double r8128253 = r8128251 + r8128252;
        double r8128254 = r8128250 / r8128253;
        double r8128255 = 1.0;
        double r8128256 = r8128254 + r8128255;
        double r8128257 = r8128256 / r8128252;
        return r8128257;
}

double f(double alpha, double beta) {
        double r8128258 = beta;
        double r8128259 = alpha;
        double r8128260 = r8128258 - r8128259;
        double r8128261 = r8128259 + r8128258;
        double r8128262 = 2.0;
        double r8128263 = r8128261 + r8128262;
        double r8128264 = r8128260 / r8128263;
        double r8128265 = -0.9999999999983659;
        bool r8128266 = r8128264 <= r8128265;
        double r8128267 = r8128258 / r8128263;
        double r8128268 = 4.0;
        double r8128269 = r8128259 * r8128259;
        double r8128270 = r8128268 / r8128269;
        double r8128271 = r8128262 / r8128259;
        double r8128272 = r8128270 - r8128271;
        double r8128273 = 8.0;
        double r8128274 = r8128273 / r8128259;
        double r8128275 = r8128274 / r8128269;
        double r8128276 = r8128272 - r8128275;
        double r8128277 = r8128267 - r8128276;
        double r8128278 = r8128277 / r8128262;
        double r8128279 = 1.0;
        double r8128280 = r8128279 + r8128264;
        double r8128281 = exp(r8128280);
        double r8128282 = log(r8128281);
        double r8128283 = r8128282 / r8128262;
        double r8128284 = r8128266 ? r8128278 : r8128283;
        return r8128284;
}

\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}
\begin{array}{l}
\mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \le -0.9999999999983659:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\left(\frac{4.0}{\alpha \cdot \alpha} - \frac{2.0}{\alpha}\right) - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\right)}{2.0}\\

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

\end{array}

Error

Bits error versus alpha

Bits error versus beta

Derivation

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

    1. Initial program 60.4

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

      \[\leadsto \frac{\color{blue}{\left(\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \frac{\alpha}{\left(\alpha + \beta\right) + 2.0}\right)} + 1.0}{2.0}\]
    4. Applied associate-+l-58.6

      \[\leadsto \frac{\color{blue}{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}}{2.0}\]
    5. Taylor expanded around -inf 10.8

      \[\leadsto \frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \color{blue}{\left(4.0 \cdot \frac{1}{{\alpha}^{2}} - \left(2.0 \cdot \frac{1}{\alpha} + 8.0 \cdot \frac{1}{{\alpha}^{3}}\right)\right)}}{2.0}\]
    6. Simplified10.8

      \[\leadsto \frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \color{blue}{\left(\left(\frac{4.0}{\alpha \cdot \alpha} - \frac{2.0}{\alpha}\right) - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\right)}}{2.0}\]

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

    1. Initial program 0.3

      \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
    2. Using strategy rm
    3. Applied add-log-exp0.3

      \[\leadsto \frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + \color{blue}{\log \left(e^{1.0}\right)}}{2.0}\]
    4. Applied add-log-exp0.3

      \[\leadsto \frac{\color{blue}{\log \left(e^{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0}}\right)} + \log \left(e^{1.0}\right)}{2.0}\]
    5. Applied sum-log0.3

      \[\leadsto \frac{\color{blue}{\log \left(e^{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0}} \cdot e^{1.0}\right)}}{2.0}\]
    6. Simplified0.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \le -0.9999999999983659:\\ \;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\left(\frac{4.0}{\alpha \cdot \alpha} - \frac{2.0}{\alpha}\right) - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\right)}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(e^{1.0 + \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0}}\right)}{2.0}\\ \end{array}\]

Reproduce

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