Average Error: 3.7 → 2.3
Time: 1.2m
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 1.576260447932958900190557359812588284535 \cdot 10^{206}:\\ \;\;\;\;\frac{\frac{1 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{1 \cdot 2 + \left(\alpha + \beta\right)} \cdot \frac{1}{1 \cdot 2 + \left(\alpha + \beta\right)}}{1 + \left(1 \cdot 2 + \left(\alpha + \beta\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\beta \cdot 0.25 + 0.5\right) + \alpha \cdot 0.25}{\left(1 + \left(1 \cdot 2 + \left(\alpha + \beta\right)\right)\right) \cdot \left(1 \cdot 2 + \left(\alpha + \beta\right)\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 1.576260447932958900190557359812588284535 \cdot 10^{206}:\\
\;\;\;\;\frac{\frac{1 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{1 \cdot 2 + \left(\alpha + \beta\right)} \cdot \frac{1}{1 \cdot 2 + \left(\alpha + \beta\right)}}{1 + \left(1 \cdot 2 + \left(\alpha + \beta\right)\right)}\\

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

\end{array}
double f(double alpha, double beta) {
        double r4358597 = alpha;
        double r4358598 = beta;
        double r4358599 = r4358597 + r4358598;
        double r4358600 = r4358598 * r4358597;
        double r4358601 = r4358599 + r4358600;
        double r4358602 = 1.0;
        double r4358603 = r4358601 + r4358602;
        double r4358604 = 2.0;
        double r4358605 = r4358604 * r4358602;
        double r4358606 = r4358599 + r4358605;
        double r4358607 = r4358603 / r4358606;
        double r4358608 = r4358607 / r4358606;
        double r4358609 = r4358606 + r4358602;
        double r4358610 = r4358608 / r4358609;
        return r4358610;
}

double f(double alpha, double beta) {
        double r4358611 = beta;
        double r4358612 = 1.5762604479329589e+206;
        bool r4358613 = r4358611 <= r4358612;
        double r4358614 = 1.0;
        double r4358615 = alpha;
        double r4358616 = r4358615 * r4358611;
        double r4358617 = r4358615 + r4358611;
        double r4358618 = r4358616 + r4358617;
        double r4358619 = r4358614 + r4358618;
        double r4358620 = 2.0;
        double r4358621 = r4358614 * r4358620;
        double r4358622 = r4358621 + r4358617;
        double r4358623 = r4358619 / r4358622;
        double r4358624 = 1.0;
        double r4358625 = r4358624 / r4358622;
        double r4358626 = r4358623 * r4358625;
        double r4358627 = r4358614 + r4358622;
        double r4358628 = r4358626 / r4358627;
        double r4358629 = 0.25;
        double r4358630 = r4358611 * r4358629;
        double r4358631 = 0.5;
        double r4358632 = r4358630 + r4358631;
        double r4358633 = r4358615 * r4358629;
        double r4358634 = r4358632 + r4358633;
        double r4358635 = r4358627 * r4358622;
        double r4358636 = r4358634 / r4358635;
        double r4358637 = r4358613 ? r4358628 : r4358636;
        return r4358637;
}

Error

Bits error versus alpha

Bits error versus beta

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if beta < 1.5762604479329589e+206

    1. Initial program 1.9

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

      \[\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}\]

    if 1.5762604479329589e+206 < beta

    1. Initial program 17.7

      \[\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 associate-/l/17.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\beta \le 1.576260447932958900190557359812588284535 \cdot 10^{206}:\\ \;\;\;\;\frac{\frac{1 + \left(\alpha \cdot \beta + \left(\alpha + \beta\right)\right)}{1 \cdot 2 + \left(\alpha + \beta\right)} \cdot \frac{1}{1 \cdot 2 + \left(\alpha + \beta\right)}}{1 + \left(1 \cdot 2 + \left(\alpha + \beta\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\beta \cdot 0.25 + 0.5\right) + \alpha \cdot 0.25}{\left(1 + \left(1 \cdot 2 + \left(\alpha + \beta\right)\right)\right) \cdot \left(1 \cdot 2 + \left(\alpha + \beta\right)\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019200 
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/3"
  :pre (and (> alpha -1.0) (> beta -1.0))
  (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ (+ alpha beta) (* 2.0 1.0)) 1.0)))