Average Error: 16.4 → 6.0
Time: 27.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 7.41319761099139 \cdot 10^{+16}:\\ \;\;\;\;\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{\mathsf{fma}\left(\frac{\sqrt[3]{\beta} \cdot \sqrt[3]{\beta}}{\sqrt[3]{2.0 + \left(\beta + \alpha\right)} \cdot \sqrt[3]{2.0 + \left(\beta + \alpha\right)}}, \frac{\sqrt[3]{\beta}}{\sqrt[3]{2.0 + \left(\beta + \alpha\right)}}, -\left(\left(\frac{\frac{4.0}{\alpha}}{\alpha} - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\right) - \frac{2.0}{\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 7.41319761099139 \cdot 10^{+16}:\\
\;\;\;\;\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{\mathsf{fma}\left(\frac{\sqrt[3]{\beta} \cdot \sqrt[3]{\beta}}{\sqrt[3]{2.0 + \left(\beta + \alpha\right)} \cdot \sqrt[3]{2.0 + \left(\beta + \alpha\right)}}, \frac{\sqrt[3]{\beta}}{\sqrt[3]{2.0 + \left(\beta + \alpha\right)}}, -\left(\left(\frac{\frac{4.0}{\alpha}}{\alpha} - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\right) - \frac{2.0}{\alpha}\right)\right)}{2.0}\\

\end{array}
double f(double alpha, double beta) {
        double r3561412 = beta;
        double r3561413 = alpha;
        double r3561414 = r3561412 - r3561413;
        double r3561415 = r3561413 + r3561412;
        double r3561416 = 2.0;
        double r3561417 = r3561415 + r3561416;
        double r3561418 = r3561414 / r3561417;
        double r3561419 = 1.0;
        double r3561420 = r3561418 + r3561419;
        double r3561421 = r3561420 / r3561416;
        return r3561421;
}

double f(double alpha, double beta) {
        double r3561422 = alpha;
        double r3561423 = 7.41319761099139e+16;
        bool r3561424 = r3561422 <= r3561423;
        double r3561425 = beta;
        double r3561426 = 2.0;
        double r3561427 = r3561425 + r3561422;
        double r3561428 = r3561426 + r3561427;
        double r3561429 = r3561425 / r3561428;
        double r3561430 = r3561422 / r3561428;
        double r3561431 = 1.0;
        double r3561432 = r3561430 - r3561431;
        double r3561433 = r3561429 - r3561432;
        double r3561434 = log(r3561433);
        double r3561435 = exp(r3561434);
        double r3561436 = r3561435 / r3561426;
        double r3561437 = cbrt(r3561425);
        double r3561438 = r3561437 * r3561437;
        double r3561439 = cbrt(r3561428);
        double r3561440 = r3561439 * r3561439;
        double r3561441 = r3561438 / r3561440;
        double r3561442 = r3561437 / r3561439;
        double r3561443 = 4.0;
        double r3561444 = r3561443 / r3561422;
        double r3561445 = r3561444 / r3561422;
        double r3561446 = 8.0;
        double r3561447 = r3561446 / r3561422;
        double r3561448 = r3561422 * r3561422;
        double r3561449 = r3561447 / r3561448;
        double r3561450 = r3561445 - r3561449;
        double r3561451 = r3561426 / r3561422;
        double r3561452 = r3561450 - r3561451;
        double r3561453 = -r3561452;
        double r3561454 = fma(r3561441, r3561442, r3561453);
        double r3561455 = r3561454 / r3561426;
        double r3561456 = r3561424 ? r3561436 : r3561455;
        return r3561456;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 7.41319761099139e+16

    1. Initial program 0.5

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

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

      \[\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 7.41319761099139e+16 < alpha

    1. Initial program 49.8

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

      \[\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.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. Using strategy rm
    6. Applied add-cube-cbrt48.6

      \[\leadsto \frac{\frac{\beta}{\color{blue}{\left(\sqrt[3]{\left(\alpha + \beta\right) + 2.0} \cdot \sqrt[3]{\left(\alpha + \beta\right) + 2.0}\right) \cdot \sqrt[3]{\left(\alpha + \beta\right) + 2.0}}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\]
    7. Applied add-cube-cbrt48.4

      \[\leadsto \frac{\frac{\color{blue}{\left(\sqrt[3]{\beta} \cdot \sqrt[3]{\beta}\right) \cdot \sqrt[3]{\beta}}}{\left(\sqrt[3]{\left(\alpha + \beta\right) + 2.0} \cdot \sqrt[3]{\left(\alpha + \beta\right) + 2.0}\right) \cdot \sqrt[3]{\left(\alpha + \beta\right) + 2.0}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\]
    8. Applied times-frac48.4

      \[\leadsto \frac{\color{blue}{\frac{\sqrt[3]{\beta} \cdot \sqrt[3]{\beta}}{\sqrt[3]{\left(\alpha + \beta\right) + 2.0} \cdot \sqrt[3]{\left(\alpha + \beta\right) + 2.0}} \cdot \frac{\sqrt[3]{\beta}}{\sqrt[3]{\left(\alpha + \beta\right) + 2.0}}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\]
    9. Applied fma-neg48.4

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{\sqrt[3]{\beta} \cdot \sqrt[3]{\beta}}{\sqrt[3]{\left(\alpha + \beta\right) + 2.0} \cdot \sqrt[3]{\left(\alpha + \beta\right) + 2.0}}, \frac{\sqrt[3]{\beta}}{\sqrt[3]{\left(\alpha + \beta\right) + 2.0}}, -\left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)\right)}}{2.0}\]
    10. Taylor expanded around -inf 17.7

      \[\leadsto \frac{\mathsf{fma}\left(\frac{\sqrt[3]{\beta} \cdot \sqrt[3]{\beta}}{\sqrt[3]{\left(\alpha + \beta\right) + 2.0} \cdot \sqrt[3]{\left(\alpha + \beta\right) + 2.0}}, \frac{\sqrt[3]{\beta}}{\sqrt[3]{\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)}\right)}{2.0}\]
    11. Simplified17.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 7.41319761099139 \cdot 10^{+16}:\\ \;\;\;\;\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{\mathsf{fma}\left(\frac{\sqrt[3]{\beta} \cdot \sqrt[3]{\beta}}{\sqrt[3]{2.0 + \left(\beta + \alpha\right)} \cdot \sqrt[3]{2.0 + \left(\beta + \alpha\right)}}, \frac{\sqrt[3]{\beta}}{\sqrt[3]{2.0 + \left(\beta + \alpha\right)}}, -\left(\left(\frac{\frac{4.0}{\alpha}}{\alpha} - \frac{\frac{8.0}{\alpha}}{\alpha \cdot \alpha}\right) - \frac{2.0}{\alpha}\right)\right)}{2.0}\\ \end{array}\]

Reproduce

herbie shell --seed 2019149 +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))