Average Error: 3.6 → 2.8
Time: 26.8s
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.3353325288374214 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{1.0 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{\left(\alpha + \beta\right) + 2}}{\left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot \left(\alpha + \beta\right) + \left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\alpha, 0.25, \mathsf{fma}\left(0.25, \beta, 0.5\right)\right)}{\left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot \left(\alpha + \beta\right) + \left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot 2}\\ \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.3353325288374214 \cdot 10^{+154}:\\
\;\;\;\;\frac{\frac{1.0 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{\left(\alpha + \beta\right) + 2}}{\left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot \left(\alpha + \beta\right) + \left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot 2}\\

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

\end{array}
double f(double alpha, double beta) {
        double r3419516 = alpha;
        double r3419517 = beta;
        double r3419518 = r3419516 + r3419517;
        double r3419519 = r3419517 * r3419516;
        double r3419520 = r3419518 + r3419519;
        double r3419521 = 1.0;
        double r3419522 = r3419520 + r3419521;
        double r3419523 = 2.0;
        double r3419524 = 1.0;
        double r3419525 = r3419523 * r3419524;
        double r3419526 = r3419518 + r3419525;
        double r3419527 = r3419522 / r3419526;
        double r3419528 = r3419527 / r3419526;
        double r3419529 = r3419526 + r3419521;
        double r3419530 = r3419528 / r3419529;
        return r3419530;
}

double f(double alpha, double beta) {
        double r3419531 = beta;
        double r3419532 = 1.3353325288374214e+154;
        bool r3419533 = r3419531 <= r3419532;
        double r3419534 = 1.0;
        double r3419535 = alpha;
        double r3419536 = r3419535 * r3419531;
        double r3419537 = r3419535 + r3419531;
        double r3419538 = r3419536 + r3419537;
        double r3419539 = r3419534 + r3419538;
        double r3419540 = 2.0;
        double r3419541 = r3419537 + r3419540;
        double r3419542 = r3419539 / r3419541;
        double r3419543 = r3419534 + r3419541;
        double r3419544 = r3419543 * r3419537;
        double r3419545 = r3419543 * r3419540;
        double r3419546 = r3419544 + r3419545;
        double r3419547 = r3419542 / r3419546;
        double r3419548 = 0.25;
        double r3419549 = 0.5;
        double r3419550 = fma(r3419548, r3419531, r3419549);
        double r3419551 = fma(r3419535, r3419548, r3419550);
        double r3419552 = r3419551 / r3419546;
        double r3419553 = r3419533 ? r3419547 : r3419552;
        return r3419553;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if beta < 1.3353325288374214e+154

    1. Initial program 1.2

      \[\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. Using strategy rm
    3. Applied associate-/l/1.6

      \[\leadsto \color{blue}{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0\right) \cdot \left(\left(\alpha + \beta\right) + 2 \cdot 1\right)}}\]
    4. Using strategy rm
    5. Applied distribute-lft-in1.6

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

    if 1.3353325288374214e+154 < beta

    1. Initial program 16.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}\]
    2. Using strategy rm
    3. Applied associate-/l/18.7

      \[\leadsto \color{blue}{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0\right) \cdot \left(\left(\alpha + \beta\right) + 2 \cdot 1\right)}}\]
    4. Using strategy rm
    5. Applied distribute-lft-in18.7

      \[\leadsto \frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\color{blue}{\left(\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0\right) \cdot \left(\alpha + \beta\right) + \left(\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0\right) \cdot \left(2 \cdot 1\right)}}\]
    6. Taylor expanded around 0 8.9

      \[\leadsto \frac{\color{blue}{0.25 \cdot \alpha + \left(0.25 \cdot \beta + 0.5\right)}}{\left(\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0\right) \cdot \left(\alpha + \beta\right) + \left(\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0\right) \cdot \left(2 \cdot 1\right)}\]
    7. Simplified8.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\beta \le 1.3353325288374214 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{1.0 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{\left(\alpha + \beta\right) + 2}}{\left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot \left(\alpha + \beta\right) + \left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\alpha, 0.25, \mathsf{fma}\left(0.25, \beta, 0.5\right)\right)}{\left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot \left(\alpha + \beta\right) + \left(1.0 + \left(\left(\alpha + \beta\right) + 2\right)\right) \cdot 2}\\ \end{array}\]

Reproduce

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