Average Error: 3.8 → 2.4
Time: 50.9s
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 1.4753714951235848 \cdot 10^{+185}:\\ \;\;\;\;\frac{\frac{1}{\left(\beta + \alpha\right) + 2} \cdot \frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\left(\beta + \alpha\right) + 2}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\left(1 + \frac{2.0}{\beta \cdot \beta}\right) - \frac{1.0}{\beta}}{\left(\beta + \alpha\right) + 2}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\ \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 1.4753714951235848 \cdot 10^{+185}:\\
\;\;\;\;\frac{\frac{1}{\left(\beta + \alpha\right) + 2} \cdot \frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\left(\beta + \alpha\right) + 2}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(1 + \frac{2.0}{\beta \cdot \beta}\right) - \frac{1.0}{\beta}}{\left(\beta + \alpha\right) + 2}}{1.0 + \left(\left(\beta + \alpha\right) + 2\right)}\\

\end{array}
double f(double alpha, double beta) {
        double r4646512 = alpha;
        double r4646513 = beta;
        double r4646514 = r4646512 + r4646513;
        double r4646515 = r4646513 * r4646512;
        double r4646516 = r4646514 + r4646515;
        double r4646517 = 1.0;
        double r4646518 = r4646516 + r4646517;
        double r4646519 = 2.0;
        double r4646520 = 1.0;
        double r4646521 = r4646519 * r4646520;
        double r4646522 = r4646514 + r4646521;
        double r4646523 = r4646518 / r4646522;
        double r4646524 = r4646523 / r4646522;
        double r4646525 = r4646522 + r4646517;
        double r4646526 = r4646524 / r4646525;
        return r4646526;
}

double f(double alpha, double beta) {
        double r4646527 = beta;
        double r4646528 = 1.4753714951235848e+185;
        bool r4646529 = r4646527 <= r4646528;
        double r4646530 = 1.0;
        double r4646531 = alpha;
        double r4646532 = r4646527 + r4646531;
        double r4646533 = 2.0;
        double r4646534 = r4646532 + r4646533;
        double r4646535 = r4646530 / r4646534;
        double r4646536 = 1.0;
        double r4646537 = fma(r4646527, r4646531, r4646532);
        double r4646538 = r4646536 + r4646537;
        double r4646539 = r4646538 / r4646534;
        double r4646540 = r4646535 * r4646539;
        double r4646541 = r4646536 + r4646534;
        double r4646542 = r4646540 / r4646541;
        double r4646543 = 2.0;
        double r4646544 = r4646527 * r4646527;
        double r4646545 = r4646543 / r4646544;
        double r4646546 = r4646530 + r4646545;
        double r4646547 = r4646536 / r4646527;
        double r4646548 = r4646546 - r4646547;
        double r4646549 = r4646548 / r4646534;
        double r4646550 = r4646549 / r4646541;
        double r4646551 = r4646529 ? r4646542 : r4646550;
        return r4646551;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if beta < 1.4753714951235848e+185

    1. Initial program 1.5

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

      \[\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 div-inv1.5

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

    if 1.4753714951235848e+185 < beta

    1. Initial program 18.3

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

      \[\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. Taylor expanded around inf 7.7

      \[\leadsto \frac{\frac{\color{blue}{\left(2.0 \cdot \frac{1}{{\beta}^{2}} + 1\right) - 1.0 \cdot \frac{1}{\beta}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    4. Simplified7.7

      \[\leadsto \frac{\frac{\color{blue}{\left(1 + \frac{2.0}{\beta \cdot \beta}\right) - \frac{1.0}{\beta}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.4

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

Reproduce

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