Average Error: 15.9 → 6.0
Time: 22.5s
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 11629067263522.379:\\ \;\;\;\;\frac{e^{\log \left(\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\alpha}{2.0 + \left(\beta + \alpha\right)} - 1.0\right)\right)}}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\beta \cdot \frac{1}{2.0 + \left(\beta + \alpha\right)} - \left(\left(\frac{\frac{4.0}{\alpha}}{\alpha} - \frac{2.0}{\alpha}\right) - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\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 11629067263522.379:\\
\;\;\;\;\frac{e^{\log \left(\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\alpha}{2.0 + \left(\beta + \alpha\right)} - 1.0\right)\right)}}{2.0}\\

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

\end{array}
double f(double alpha, double beta) {
        double r4534931 = beta;
        double r4534932 = alpha;
        double r4534933 = r4534931 - r4534932;
        double r4534934 = r4534932 + r4534931;
        double r4534935 = 2.0;
        double r4534936 = r4534934 + r4534935;
        double r4534937 = r4534933 / r4534936;
        double r4534938 = 1.0;
        double r4534939 = r4534937 + r4534938;
        double r4534940 = r4534939 / r4534935;
        return r4534940;
}

double f(double alpha, double beta) {
        double r4534941 = alpha;
        double r4534942 = 11629067263522.379;
        bool r4534943 = r4534941 <= r4534942;
        double r4534944 = beta;
        double r4534945 = 2.0;
        double r4534946 = r4534944 + r4534941;
        double r4534947 = r4534945 + r4534946;
        double r4534948 = r4534944 / r4534947;
        double r4534949 = r4534941 / r4534947;
        double r4534950 = 1.0;
        double r4534951 = r4534949 - r4534950;
        double r4534952 = r4534948 - r4534951;
        double r4534953 = log(r4534952);
        double r4534954 = exp(r4534953);
        double r4534955 = r4534954 / r4534945;
        double r4534956 = 1.0;
        double r4534957 = r4534956 / r4534947;
        double r4534958 = r4534944 * r4534957;
        double r4534959 = 4.0;
        double r4534960 = r4534959 / r4534941;
        double r4534961 = r4534960 / r4534941;
        double r4534962 = r4534945 / r4534941;
        double r4534963 = r4534961 - r4534962;
        double r4534964 = 8.0;
        double r4534965 = r4534964 / r4534941;
        double r4534966 = r4534941 * r4534941;
        double r4534967 = r4534965 / r4534966;
        double r4534968 = r4534963 - r4534967;
        double r4534969 = r4534958 - r4534968;
        double r4534970 = r4534969 / r4534945;
        double r4534971 = r4534943 ? r4534955 : r4534970;
        return r4534971;
}

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

    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 div-sub0.3

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

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

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

    if 11629067263522.379 < alpha

    1. Initial program 49.9

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

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

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

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

      \[\leadsto \frac{\color{blue}{\beta \cdot \frac{1}{\left(\alpha + \beta\right) + 2.0}} - \log \left(e^{\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0}\right)}{2.0}\]
    9. Taylor expanded around inf 18.5

      \[\leadsto \frac{\beta \cdot \frac{1}{\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}\]
    10. Simplified18.5

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

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

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(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))