Average Error: 3.7 → 2.3
Time: 12.8s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1\]
\[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
\[\begin{array}{l} \mathbf{if}\;\beta \le 8.4856429570103299 \cdot 10^{177}:\\ \;\;\;\;\frac{\frac{\frac{1 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{0}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\ \end{array}\]
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}
\begin{array}{l}
\mathbf{if}\;\beta \le 8.4856429570103299 \cdot 10^{177}:\\
\;\;\;\;\frac{\frac{\frac{1 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{0}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\

\end{array}
double f(double alpha, double beta) {
        double r93388 = alpha;
        double r93389 = beta;
        double r93390 = r93388 + r93389;
        double r93391 = r93389 * r93388;
        double r93392 = r93390 + r93391;
        double r93393 = 1.0;
        double r93394 = r93392 + r93393;
        double r93395 = 2.0;
        double r93396 = r93395 * r93393;
        double r93397 = r93390 + r93396;
        double r93398 = r93394 / r93397;
        double r93399 = r93398 / r93397;
        double r93400 = r93397 + r93393;
        double r93401 = r93399 / r93400;
        return r93401;
}

double f(double alpha, double beta) {
        double r93402 = beta;
        double r93403 = 8.48564295701033e+177;
        bool r93404 = r93402 <= r93403;
        double r93405 = 1.0;
        double r93406 = alpha;
        double r93407 = r93406 * r93402;
        double r93408 = r93406 + r93402;
        double r93409 = r93407 + r93408;
        double r93410 = r93405 + r93409;
        double r93411 = 2.0;
        double r93412 = fma(r93405, r93411, r93408);
        double r93413 = r93410 / r93412;
        double r93414 = r93413 / r93412;
        double r93415 = fma(r93411, r93405, r93405);
        double r93416 = r93408 + r93415;
        double r93417 = r93414 / r93416;
        double r93418 = 0.0;
        double r93419 = r93418 / r93416;
        double r93420 = r93404 ? r93417 : r93419;
        return r93420;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if beta < 8.48564295701033e+177

    1. Initial program 1.6

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

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

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

    if 8.48564295701033e+177 < beta

    1. Initial program 16.3

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

      \[\leadsto \color{blue}{\frac{\frac{\frac{1 + \mathsf{fma}\left(\alpha, \beta, \alpha + \beta\right)}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}}\]
    3. Taylor expanded around inf 6.4

      \[\leadsto \frac{\color{blue}{0}}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.3

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

Reproduce

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