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

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

\end{array}
double f(double alpha, double beta) {
        double r113406 = alpha;
        double r113407 = beta;
        double r113408 = r113406 + r113407;
        double r113409 = r113407 * r113406;
        double r113410 = r113408 + r113409;
        double r113411 = 1.0;
        double r113412 = r113410 + r113411;
        double r113413 = 2.0;
        double r113414 = r113413 * r113411;
        double r113415 = r113408 + r113414;
        double r113416 = r113412 / r113415;
        double r113417 = r113416 / r113415;
        double r113418 = r113415 + r113411;
        double r113419 = r113417 / r113418;
        return r113419;
}

double f(double alpha, double beta) {
        double r113420 = alpha;
        double r113421 = 6.9339256802819e+165;
        bool r113422 = r113420 <= r113421;
        double r113423 = beta;
        double r113424 = r113420 + r113423;
        double r113425 = r113423 * r113420;
        double r113426 = r113424 + r113425;
        double r113427 = 1.0;
        double r113428 = r113426 + r113427;
        double r113429 = 2.0;
        double r113430 = r113429 * r113427;
        double r113431 = r113424 + r113430;
        double r113432 = r113428 / r113431;
        double r113433 = 1.0;
        double r113434 = fma(r113427, r113429, r113424);
        double r113435 = r113434 / r113433;
        double r113436 = r113433 / r113435;
        double r113437 = r113432 * r113436;
        double r113438 = r113431 + r113427;
        double r113439 = r113437 / r113438;
        double r113440 = 0.0;
        double r113441 = r113440 / r113438;
        double r113442 = r113422 ? r113439 : r113441;
        return r113442;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 6.9339256802819e+165

    1. Initial program 1.5

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

      \[\leadsto \frac{\color{blue}{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1} \cdot \frac{1}{\left(\alpha + \beta\right) + 2 \cdot 1}}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
    4. Simplified1.5

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

    if 6.9339256802819e+165 < alpha

    1. Initial program 16.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}\]
    2. Taylor expanded around inf 7.2

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

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

Reproduce

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