Average Error: 0.2 → 0.2
Time: 19.8s
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 r111581 = a;
        double r111582 = r111581 * r111581;
        double r111583 = b;
        double r111584 = r111583 * r111583;
        double r111585 = r111582 + r111584;
        double r111586 = 2.0;
        double r111587 = pow(r111585, r111586);
        double r111588 = 4.0;
        double r111589 = 1.0;
        double r111590 = r111589 + r111581;
        double r111591 = r111582 * r111590;
        double r111592 = 3.0;
        double r111593 = r111592 * r111581;
        double r111594 = r111589 - r111593;
        double r111595 = r111584 * r111594;
        double r111596 = r111591 + r111595;
        double r111597 = r111588 * r111596;
        double r111598 = r111587 + r111597;
        double r111599 = r111598 - r111589;
        return r111599;
}

double f(double a, double b) {
        double r111600 = a;
        double r111601 = r111600 * r111600;
        double r111602 = b;
        double r111603 = r111602 * r111602;
        double r111604 = r111601 + r111603;
        double r111605 = 2.0;
        double r111606 = pow(r111604, r111605);
        double r111607 = 4.0;
        double r111608 = 1.0;
        double r111609 = r111608 + r111600;
        double r111610 = 2.0;
        double r111611 = pow(r111600, r111610);
        double r111612 = r111609 * r111611;
        double r111613 = 3.0;
        double r111614 = r111613 * r111600;
        double r111615 = r111608 - r111614;
        double r111616 = r111603 * r111615;
        double r111617 = r111612 + r111616;
        double r111618 = r111607 * r111617;
        double r111619 = r111606 + r111618;
        double r111620 = r111619 - r111608;
        return r111620;
}

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))