Average Error: 16.6 → 3.3
Time: 1.0m
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1\]
\[\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.9999439615156119:\\ \;\;\;\;\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{\frac{1.0 \cdot \left(1.0 \cdot 1.0\right) + \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0}\right)}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + \left(1.0 \cdot 1.0 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot 1.0\right)}}{2.0}\\ \end{array}\]
\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.9999439615156119:\\
\;\;\;\;\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{\frac{1.0 \cdot \left(1.0 \cdot 1.0\right) + \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0}\right)}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + \left(1.0 \cdot 1.0 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot 1.0\right)}}{2.0}\\

\end{array}
double f(double alpha, double beta) {
        double r32863290 = beta;
        double r32863291 = alpha;
        double r32863292 = r32863290 - r32863291;
        double r32863293 = r32863291 + r32863290;
        double r32863294 = 2.0;
        double r32863295 = r32863293 + r32863294;
        double r32863296 = r32863292 / r32863295;
        double r32863297 = 1.0;
        double r32863298 = r32863296 + r32863297;
        double r32863299 = r32863298 / r32863294;
        return r32863299;
}

double f(double alpha, double beta) {
        double r32863300 = beta;
        double r32863301 = alpha;
        double r32863302 = r32863300 - r32863301;
        double r32863303 = r32863301 + r32863300;
        double r32863304 = 2.0;
        double r32863305 = r32863303 + r32863304;
        double r32863306 = r32863302 / r32863305;
        double r32863307 = -0.9999439615156119;
        bool r32863308 = r32863306 <= r32863307;
        double r32863309 = r32863300 / r32863305;
        double r32863310 = 4.0;
        double r32863311 = r32863301 * r32863301;
        double r32863312 = r32863310 / r32863311;
        double r32863313 = r32863304 / r32863301;
        double r32863314 = r32863312 - r32863313;
        double r32863315 = 8.0;
        double r32863316 = r32863315 / r32863301;
        double r32863317 = r32863316 / r32863311;
        double r32863318 = r32863314 - r32863317;
        double r32863319 = r32863309 - r32863318;
        double r32863320 = r32863319 / r32863304;
        double r32863321 = 1.0;
        double r32863322 = r32863321 * r32863321;
        double r32863323 = r32863321 * r32863322;
        double r32863324 = r32863306 * r32863306;
        double r32863325 = r32863306 * r32863324;
        double r32863326 = r32863323 + r32863325;
        double r32863327 = r32863306 * r32863321;
        double r32863328 = r32863322 - r32863327;
        double r32863329 = r32863324 + r32863328;
        double r32863330 = r32863326 / r32863329;
        double r32863331 = r32863330 / r32863304;
        double r32863332 = r32863308 ? r32863320 : r32863331;
        return r32863332;
}

Error

Bits error versus alpha

Bits error versus beta

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

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

    1. Initial program 59.3

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

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

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

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

      \[\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.9999439615156119 < (/ (- beta alpha) (+ (+ alpha beta) 2.0))

    1. Initial program 0.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \le -0.9999439615156119:\\ \;\;\;\;\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{\frac{1.0 \cdot \left(1.0 \cdot 1.0\right) + \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \left(\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0}\right)}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + \left(1.0 \cdot 1.0 - \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} \cdot 1.0\right)}}{2.0}\\ \end{array}\]

Reproduce

herbie shell --seed 2019128 
(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))