Average Error: 3.7 → 2.4
Time: 1.8m
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1\]
\[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]
\[\begin{array}{l} \mathbf{if}\;\beta \le 2.5988416377747475 \cdot 10^{+162}:\\ \;\;\;\;\frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\left(\beta + \alpha\right) + 2}}{\left(\beta + \alpha\right) + 2}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}
\begin{array}{l}
\mathbf{if}\;\beta \le 2.5988416377747475 \cdot 10^{+162}:\\
\;\;\;\;\frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\left(\beta + \alpha\right) + 2}}{\left(\beta + \alpha\right) + 2}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\

\mathbf{else}:\\
\;\;\;\;0\\

\end{array}
double f(double alpha, double beta) {
        double r4347983 = alpha;
        double r4347984 = beta;
        double r4347985 = r4347983 + r4347984;
        double r4347986 = r4347984 * r4347983;
        double r4347987 = r4347985 + r4347986;
        double r4347988 = 1.0;
        double r4347989 = r4347987 + r4347988;
        double r4347990 = 2.0;
        double r4347991 = 1.0;
        double r4347992 = r4347990 * r4347991;
        double r4347993 = r4347985 + r4347992;
        double r4347994 = r4347989 / r4347993;
        double r4347995 = r4347994 / r4347993;
        double r4347996 = r4347993 + r4347988;
        double r4347997 = r4347995 / r4347996;
        return r4347997;
}

double f(double alpha, double beta) {
        double r4347998 = beta;
        double r4347999 = 2.5988416377747475e+162;
        bool r4348000 = r4347998 <= r4347999;
        double r4348001 = 1.0;
        double r4348002 = alpha;
        double r4348003 = r4347998 + r4348002;
        double r4348004 = fma(r4347998, r4348002, r4348003);
        double r4348005 = r4348001 + r4348004;
        double r4348006 = 2.0;
        double r4348007 = r4348003 + r4348006;
        double r4348008 = r4348005 / r4348007;
        double r4348009 = r4348008 / r4348007;
        double r4348010 = r4348001 + r4348007;
        double r4348011 = r4348009 / r4348010;
        double r4348012 = 0.0;
        double r4348013 = r4348000 ? r4348011 : r4348012;
        return r4348013;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if beta < 2.5988416377747475e+162

    1. Initial program 1.2

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]
    2. Simplified1.2

      \[\leadsto \color{blue}{\frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}}\]
    3. Using strategy rm
    4. Applied +-commutative1.2

      \[\leadsto \frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\color{blue}{1.0 + \left(2 + \left(\beta + \alpha\right)\right)}}\]

    if 2.5988416377747475e+162 < beta

    1. Initial program 16.8

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]
    2. Simplified16.8

      \[\leadsto \color{blue}{\frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}}\]
    3. Using strategy rm
    4. Applied +-commutative16.8

      \[\leadsto \frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\color{blue}{1.0 + \left(2 + \left(\beta + \alpha\right)\right)}}\]
    5. Taylor expanded around -inf 8.7

      \[\leadsto \color{blue}{0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\beta \le 2.5988416377747475 \cdot 10^{+162}:\\ \;\;\;\;\frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\left(\beta + \alpha\right) + 2}}{\left(\beta + \alpha\right) + 2}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

herbie shell --seed 2019149 +o rules:numerics
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/3"
  :pre (and (> alpha -1) (> beta -1))
  (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1.0)))