Average Error: 3.5 → 2.7
Time: 1.7m
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 9.687684579379148 \cdot 10^{+146}:\\ \;\;\;\;\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 9.687684579379148 \cdot 10^{+146}:\\
\;\;\;\;\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 r4751509 = alpha;
        double r4751510 = beta;
        double r4751511 = r4751509 + r4751510;
        double r4751512 = r4751510 * r4751509;
        double r4751513 = r4751511 + r4751512;
        double r4751514 = 1.0;
        double r4751515 = r4751513 + r4751514;
        double r4751516 = 2.0;
        double r4751517 = 1.0;
        double r4751518 = r4751516 * r4751517;
        double r4751519 = r4751511 + r4751518;
        double r4751520 = r4751515 / r4751519;
        double r4751521 = r4751520 / r4751519;
        double r4751522 = r4751519 + r4751514;
        double r4751523 = r4751521 / r4751522;
        return r4751523;
}

double f(double alpha, double beta) {
        double r4751524 = beta;
        double r4751525 = 9.687684579379148e+146;
        bool r4751526 = r4751524 <= r4751525;
        double r4751527 = 1.0;
        double r4751528 = alpha;
        double r4751529 = r4751524 + r4751528;
        double r4751530 = fma(r4751524, r4751528, r4751529);
        double r4751531 = r4751527 + r4751530;
        double r4751532 = 2.0;
        double r4751533 = r4751529 + r4751532;
        double r4751534 = r4751531 / r4751533;
        double r4751535 = r4751534 / r4751533;
        double r4751536 = r4751527 + r4751533;
        double r4751537 = r4751535 / r4751536;
        double r4751538 = 0.0;
        double r4751539 = r4751526 ? r4751537 : r4751538;
        return r4751539;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if beta < 9.687684579379148e+146

    1. Initial program 1.0

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

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

      \[\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 9.687684579379148e+146 < beta

    1. Initial program 15.4

      \[\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. Simplified15.4

      \[\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 +-commutative15.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\beta \le 9.687684579379148 \cdot 10^{+146}:\\ \;\;\;\;\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 2019144 +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)))