Average Error: 3.8 → 3.8
Time: 1.7m
Precision: 64
\[\alpha \gt -1.0 \land \beta \gt -1.0\]
\[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0}}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0}}{\left(\left(\alpha + \beta\right) + 2.0 \cdot 1.0\right) + 1.0}\]
\[\frac{\frac{1}{2.0 \cdot 1.0 + \left(\beta + \alpha\right)} \cdot \frac{1.0 + \left(\alpha \cdot \beta + \left(\beta + \alpha\right)\right)}{2.0 \cdot 1.0 + \left(\beta + \alpha\right)}}{1.0 + \left(2.0 \cdot 1.0 + \left(\beta + \alpha\right)\right)}\]
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0}}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0}}{\left(\left(\alpha + \beta\right) + 2.0 \cdot 1.0\right) + 1.0}
\frac{\frac{1}{2.0 \cdot 1.0 + \left(\beta + \alpha\right)} \cdot \frac{1.0 + \left(\alpha \cdot \beta + \left(\beta + \alpha\right)\right)}{2.0 \cdot 1.0 + \left(\beta + \alpha\right)}}{1.0 + \left(2.0 \cdot 1.0 + \left(\beta + \alpha\right)\right)}
double f(double alpha, double beta) {
        double r4801725 = alpha;
        double r4801726 = beta;
        double r4801727 = r4801725 + r4801726;
        double r4801728 = r4801726 * r4801725;
        double r4801729 = r4801727 + r4801728;
        double r4801730 = 1.0;
        double r4801731 = r4801729 + r4801730;
        double r4801732 = 2.0;
        double r4801733 = r4801732 * r4801730;
        double r4801734 = r4801727 + r4801733;
        double r4801735 = r4801731 / r4801734;
        double r4801736 = r4801735 / r4801734;
        double r4801737 = r4801734 + r4801730;
        double r4801738 = r4801736 / r4801737;
        return r4801738;
}

double f(double alpha, double beta) {
        double r4801739 = 1.0;
        double r4801740 = 2.0;
        double r4801741 = 1.0;
        double r4801742 = r4801740 * r4801741;
        double r4801743 = beta;
        double r4801744 = alpha;
        double r4801745 = r4801743 + r4801744;
        double r4801746 = r4801742 + r4801745;
        double r4801747 = r4801739 / r4801746;
        double r4801748 = r4801744 * r4801743;
        double r4801749 = r4801748 + r4801745;
        double r4801750 = r4801741 + r4801749;
        double r4801751 = r4801750 / r4801746;
        double r4801752 = r4801747 * r4801751;
        double r4801753 = r4801741 + r4801746;
        double r4801754 = r4801752 / r4801753;
        return r4801754;
}

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. Initial program 3.8

    \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0}}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0}}{\left(\left(\alpha + \beta\right) + 2.0 \cdot 1.0\right) + 1.0}\]
  2. Using strategy rm
  3. Applied div-inv3.8

    \[\leadsto \frac{\color{blue}{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0} \cdot \frac{1}{\left(\alpha + \beta\right) + 2.0 \cdot 1.0}}}{\left(\left(\alpha + \beta\right) + 2.0 \cdot 1.0\right) + 1.0}\]
  4. Final simplification3.8

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

Reproduce

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