Average Error: 0.2 → 0.1
Time: 28.9s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
\[\left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + \left(b \cdot \left(\left(b \cdot b + 2 \cdot \left(a \cdot a\right)\right) \cdot b\right) + {a}^{4}\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1
\left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + \left(b \cdot \left(\left(b \cdot b + 2 \cdot \left(a \cdot a\right)\right) \cdot b\right) + {a}^{4}\right)\right) - 1
double f(double a, double b) {
        double r7931719 = a;
        double r7931720 = r7931719 * r7931719;
        double r7931721 = b;
        double r7931722 = r7931721 * r7931721;
        double r7931723 = r7931720 + r7931722;
        double r7931724 = 2.0;
        double r7931725 = pow(r7931723, r7931724);
        double r7931726 = 4.0;
        double r7931727 = 1.0;
        double r7931728 = r7931727 - r7931719;
        double r7931729 = r7931720 * r7931728;
        double r7931730 = 3.0;
        double r7931731 = r7931730 + r7931719;
        double r7931732 = r7931722 * r7931731;
        double r7931733 = r7931729 + r7931732;
        double r7931734 = r7931726 * r7931733;
        double r7931735 = r7931725 + r7931734;
        double r7931736 = r7931735 - r7931727;
        return r7931736;
}

double f(double a, double b) {
        double r7931737 = 4.0;
        double r7931738 = a;
        double r7931739 = r7931738 * r7931738;
        double r7931740 = 1.0;
        double r7931741 = r7931740 - r7931738;
        double r7931742 = r7931739 * r7931741;
        double r7931743 = b;
        double r7931744 = r7931743 * r7931743;
        double r7931745 = 3.0;
        double r7931746 = r7931745 + r7931738;
        double r7931747 = r7931744 * r7931746;
        double r7931748 = r7931742 + r7931747;
        double r7931749 = r7931737 * r7931748;
        double r7931750 = 2.0;
        double r7931751 = r7931750 * r7931739;
        double r7931752 = r7931744 + r7931751;
        double r7931753 = r7931752 * r7931743;
        double r7931754 = r7931743 * r7931753;
        double r7931755 = pow(r7931738, r7931737);
        double r7931756 = r7931754 + r7931755;
        double r7931757 = r7931749 + r7931756;
        double r7931758 = r7931757 - r7931740;
        return r7931758;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  2. Taylor expanded around inf 0.0

    \[\leadsto \left(\color{blue}{\left({b}^{4} + \left({a}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right)} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  3. Simplified0.2

    \[\leadsto \left(\color{blue}{\left(\left(a \cdot a\right) \cdot \left(a \cdot a\right) + \left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right)\right)} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  4. Using strategy rm
  5. Applied pow10.2

    \[\leadsto \left(\left(\left(a \cdot a\right) \cdot \left(\color{blue}{{a}^{1}} \cdot a\right) + \left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  6. Applied pow-plus0.2

    \[\leadsto \left(\left(\left(a \cdot a\right) \cdot \color{blue}{{a}^{\left(1 + 1\right)}} + \left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  7. Applied pow20.2

    \[\leadsto \left(\left(\color{blue}{{a}^{2}} \cdot {a}^{\left(1 + 1\right)} + \left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  8. Applied pow-prod-up0.1

    \[\leadsto \left(\left(\color{blue}{{a}^{\left(2 + \left(1 + 1\right)\right)}} + \left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  9. Simplified0.1

    \[\leadsto \left(\left({a}^{\color{blue}{4}} + \left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  10. Using strategy rm
  11. Applied associate-*l*0.1

    \[\leadsto \left(\left({a}^{4} + \color{blue}{b \cdot \left(b \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right)\right)}\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  12. Final simplification0.1

    \[\leadsto \left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + \left(b \cdot \left(\left(b \cdot b + 2 \cdot \left(a \cdot a\right)\right) \cdot b\right) + {a}^{4}\right)\right) - 1\]

Reproduce

herbie shell --seed 2019141 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))