Average Error: 3.9 → 1.1
Time: 20.3s
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}\;\alpha \le 2.3696559474422673 \cdot 10^{161}:\\ \;\;\;\;\frac{1 \cdot \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}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\left(2 + \left(\frac{\beta}{\alpha} + \frac{\alpha}{\beta}\right)\right) \cdot \mathsf{fma}\left(1, 2, \alpha + \beta\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}\;\alpha \le 2.3696559474422673 \cdot 10^{161}:\\
\;\;\;\;\frac{1 \cdot \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}\\

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

\end{array}
double f(double alpha, double beta) {
        double r198435 = alpha;
        double r198436 = beta;
        double r198437 = r198435 + r198436;
        double r198438 = r198436 * r198435;
        double r198439 = r198437 + r198438;
        double r198440 = 1.0;
        double r198441 = r198439 + r198440;
        double r198442 = 2.0;
        double r198443 = r198442 * r198440;
        double r198444 = r198437 + r198443;
        double r198445 = r198441 / r198444;
        double r198446 = r198445 / r198444;
        double r198447 = r198444 + r198440;
        double r198448 = r198446 / r198447;
        return r198448;
}

double f(double alpha, double beta) {
        double r198449 = alpha;
        double r198450 = 2.3696559474422673e+161;
        bool r198451 = r198449 <= r198450;
        double r198452 = 1.0;
        double r198453 = beta;
        double r198454 = r198449 + r198453;
        double r198455 = r198453 * r198449;
        double r198456 = r198454 + r198455;
        double r198457 = 1.0;
        double r198458 = r198456 + r198457;
        double r198459 = 2.0;
        double r198460 = r198459 * r198457;
        double r198461 = r198454 + r198460;
        double r198462 = r198458 / r198461;
        double r198463 = r198462 / r198461;
        double r198464 = r198452 * r198463;
        double r198465 = r198461 + r198457;
        double r198466 = r198464 / r198465;
        double r198467 = 2.0;
        double r198468 = r198453 / r198449;
        double r198469 = r198449 / r198453;
        double r198470 = r198468 + r198469;
        double r198471 = r198467 + r198470;
        double r198472 = fma(r198457, r198459, r198454);
        double r198473 = r198471 * r198472;
        double r198474 = r198452 / r198473;
        double r198475 = r198451 ? r198466 : r198474;
        return r198475;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 2.3696559474422673e+161

    1. Initial program 1.2

      \[\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. Using strategy rm
    3. Applied *-un-lft-identity1.2

      \[\leadsto \frac{\color{blue}{1 \cdot \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}\]

    if 2.3696559474422673e+161 < alpha

    1. Initial program 17.4

      \[\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. Using strategy rm
    3. Applied clear-num17.5

      \[\leadsto \color{blue}{\frac{1}{\frac{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}{\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}}}}\]
    4. Simplified17.5

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 2.3696559474422673 \cdot 10^{161}:\\ \;\;\;\;\frac{1 \cdot \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}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\left(2 + \left(\frac{\beta}{\alpha} + \frac{\alpha}{\beta}\right)\right) \cdot \mathsf{fma}\left(1, 2, \alpha + \beta\right)}\\ \end{array}\]

Reproduce

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