Average Error: 0.2 → 0.2
Time: 20.0s
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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(1 + a\right) \cdot {a}^{2} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\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(1 - 3 \cdot a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(1 + a\right) \cdot {a}^{2} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r216705 = a;
        double r216706 = r216705 * r216705;
        double r216707 = b;
        double r216708 = r216707 * r216707;
        double r216709 = r216706 + r216708;
        double r216710 = 2.0;
        double r216711 = pow(r216709, r216710);
        double r216712 = 4.0;
        double r216713 = 1.0;
        double r216714 = r216713 + r216705;
        double r216715 = r216706 * r216714;
        double r216716 = 3.0;
        double r216717 = r216716 * r216705;
        double r216718 = r216713 - r216717;
        double r216719 = r216708 * r216718;
        double r216720 = r216715 + r216719;
        double r216721 = r216712 * r216720;
        double r216722 = r216711 + r216721;
        double r216723 = r216722 - r216713;
        return r216723;
}

double f(double a, double b) {
        double r216724 = a;
        double r216725 = r216724 * r216724;
        double r216726 = b;
        double r216727 = r216726 * r216726;
        double r216728 = r216725 + r216727;
        double r216729 = 2.0;
        double r216730 = pow(r216728, r216729);
        double r216731 = 4.0;
        double r216732 = 1.0;
        double r216733 = r216732 + r216724;
        double r216734 = 2.0;
        double r216735 = pow(r216724, r216734);
        double r216736 = r216733 * r216735;
        double r216737 = 3.0;
        double r216738 = r216737 * r216724;
        double r216739 = r216732 - r216738;
        double r216740 = r216727 * r216739;
        double r216741 = r216736 + r216740;
        double r216742 = r216731 * r216741;
        double r216743 = r216730 + r216742;
        double r216744 = r216743 - r216732;
        return r216744;
}

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(1 - 3 \cdot a\right)\right)\right) - 1\]
  2. Taylor expanded around 0 0.2

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

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

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

Reproduce

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