Average Error: 16.4 → 5.9
Time: 20.1s
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}\;\alpha \le 460518623.3564523:\\ \;\;\;\;e^{\log \left(\frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\left(\frac{\frac{4.0}{\alpha}}{\alpha} - \frac{2.0}{\alpha}\right) - \frac{8.0}{\alpha \cdot \left(\alpha \cdot \alpha\right)}\right)}{2.0}\\ \end{array}\]
\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}
\begin{array}{l}
\mathbf{if}\;\alpha \le 460518623.3564523:\\
\;\;\;\;e^{\log \left(\frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\left(\frac{\frac{4.0}{\alpha}}{\alpha} - \frac{2.0}{\alpha}\right) - \frac{8.0}{\alpha \cdot \left(\alpha \cdot \alpha\right)}\right)}{2.0}\\

\end{array}
double f(double alpha, double beta) {
        double r4669476 = beta;
        double r4669477 = alpha;
        double r4669478 = r4669476 - r4669477;
        double r4669479 = r4669477 + r4669476;
        double r4669480 = 2.0;
        double r4669481 = r4669479 + r4669480;
        double r4669482 = r4669478 / r4669481;
        double r4669483 = 1.0;
        double r4669484 = r4669482 + r4669483;
        double r4669485 = r4669484 / r4669480;
        return r4669485;
}

double f(double alpha, double beta) {
        double r4669486 = alpha;
        double r4669487 = 460518623.3564523;
        bool r4669488 = r4669486 <= r4669487;
        double r4669489 = 1.0;
        double r4669490 = beta;
        double r4669491 = r4669486 + r4669490;
        double r4669492 = 2.0;
        double r4669493 = r4669491 + r4669492;
        double r4669494 = r4669493 / r4669490;
        double r4669495 = r4669489 / r4669494;
        double r4669496 = r4669486 / r4669493;
        double r4669497 = 1.0;
        double r4669498 = r4669496 - r4669497;
        double r4669499 = r4669495 - r4669498;
        double r4669500 = r4669499 / r4669492;
        double r4669501 = log(r4669500);
        double r4669502 = exp(r4669501);
        double r4669503 = r4669490 / r4669493;
        double r4669504 = 4.0;
        double r4669505 = r4669504 / r4669486;
        double r4669506 = r4669505 / r4669486;
        double r4669507 = r4669492 / r4669486;
        double r4669508 = r4669506 - r4669507;
        double r4669509 = 8.0;
        double r4669510 = r4669486 * r4669486;
        double r4669511 = r4669486 * r4669510;
        double r4669512 = r4669509 / r4669511;
        double r4669513 = r4669508 - r4669512;
        double r4669514 = r4669503 - r4669513;
        double r4669515 = r4669514 / r4669492;
        double r4669516 = r4669488 ? r4669502 : r4669515;
        return r4669516;
}

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 alpha < 460518623.3564523

    1. Initial program 0.1

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

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

      \[\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. Using strategy rm
    6. Applied add-exp-log0.1

      \[\leadsto \color{blue}{e^{\log \left(\frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\right)}}\]
    7. Using strategy rm
    8. Applied clear-num0.1

      \[\leadsto e^{\log \left(\frac{\color{blue}{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\right)}\]

    if 460518623.3564523 < alpha

    1. Initial program 50.0

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

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

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

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

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

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

Reproduce

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