Average Error: 16.5 → 6.0
Time: 3.2m
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 1028335.162937025:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - (\left(\sqrt[3]{\alpha} \cdot \sqrt[3]{\alpha}\right) \cdot \left(\frac{\sqrt[3]{\alpha}}{2.0 + \left(\beta + \alpha\right)}\right) + \left(-1.0\right))_*}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{4.0}{\alpha \cdot \alpha} - \left(\frac{2.0}{\alpha} + \frac{\frac{8.0}{\alpha \cdot \alpha}}{\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 1028335.162937025:\\
\;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - (\left(\sqrt[3]{\alpha} \cdot \sqrt[3]{\alpha}\right) \cdot \left(\frac{\sqrt[3]{\alpha}}{2.0 + \left(\beta + \alpha\right)}\right) + \left(-1.0\right))_*}{2.0}\\

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

\end{array}
double f(double alpha, double beta) {
        double r42316575 = beta;
        double r42316576 = alpha;
        double r42316577 = r42316575 - r42316576;
        double r42316578 = r42316576 + r42316575;
        double r42316579 = 2.0;
        double r42316580 = r42316578 + r42316579;
        double r42316581 = r42316577 / r42316580;
        double r42316582 = 1.0;
        double r42316583 = r42316581 + r42316582;
        double r42316584 = r42316583 / r42316579;
        return r42316584;
}

double f(double alpha, double beta) {
        double r42316585 = alpha;
        double r42316586 = 1028335.162937025;
        bool r42316587 = r42316585 <= r42316586;
        double r42316588 = beta;
        double r42316589 = 2.0;
        double r42316590 = r42316588 + r42316585;
        double r42316591 = r42316589 + r42316590;
        double r42316592 = r42316588 / r42316591;
        double r42316593 = cbrt(r42316585);
        double r42316594 = r42316593 * r42316593;
        double r42316595 = r42316593 / r42316591;
        double r42316596 = 1.0;
        double r42316597 = -r42316596;
        double r42316598 = fma(r42316594, r42316595, r42316597);
        double r42316599 = r42316592 - r42316598;
        double r42316600 = r42316599 / r42316589;
        double r42316601 = 4.0;
        double r42316602 = r42316585 * r42316585;
        double r42316603 = r42316601 / r42316602;
        double r42316604 = r42316589 / r42316585;
        double r42316605 = 8.0;
        double r42316606 = r42316605 / r42316602;
        double r42316607 = r42316606 / r42316585;
        double r42316608 = r42316604 + r42316607;
        double r42316609 = r42316603 - r42316608;
        double r42316610 = r42316592 - r42316609;
        double r42316611 = r42316610 / r42316589;
        double r42316612 = r42316587 ? r42316600 : r42316611;
        return r42316612;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 1028335.162937025

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

      \[\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 *-un-lft-identity0.0

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

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

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

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

      \[\leadsto \frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - (\color{blue}{\left(\sqrt[3]{\alpha} \cdot \sqrt[3]{\alpha}\right)} \cdot \left(\frac{\sqrt[3]{\alpha}}{\left(\alpha + \beta\right) + 2.0}\right) + \left(-1.0\right))_*}{2.0}\]

    if 1028335.162937025 < alpha

    1. Initial program 49.7

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

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

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

      \[\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. Simplified18.0

      \[\leadsto \frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \color{blue}{\left(\frac{4.0}{\alpha \cdot \alpha} - \left(\frac{\frac{8.0}{\alpha \cdot \alpha}}{\alpha} + \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 1028335.162937025:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - (\left(\sqrt[3]{\alpha} \cdot \sqrt[3]{\alpha}\right) \cdot \left(\frac{\sqrt[3]{\alpha}}{2.0 + \left(\beta + \alpha\right)}\right) + \left(-1.0\right))_*}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{4.0}{\alpha \cdot \alpha} - \left(\frac{2.0}{\alpha} + \frac{\frac{8.0}{\alpha \cdot \alpha}}{\alpha}\right)\right)}{2.0}\\ \end{array}\]

Reproduce

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