Average Error: 0.2 → 0.2
Time: 19.5s
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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r106553 = a;
        double r106554 = r106553 * r106553;
        double r106555 = b;
        double r106556 = r106555 * r106555;
        double r106557 = r106554 + r106556;
        double r106558 = 2.0;
        double r106559 = pow(r106557, r106558);
        double r106560 = 4.0;
        double r106561 = 1.0;
        double r106562 = r106561 + r106553;
        double r106563 = r106554 * r106562;
        double r106564 = 3.0;
        double r106565 = r106564 * r106553;
        double r106566 = r106561 - r106565;
        double r106567 = r106556 * r106566;
        double r106568 = r106563 + r106567;
        double r106569 = r106560 * r106568;
        double r106570 = r106559 + r106569;
        double r106571 = r106570 - r106561;
        return r106571;
}

double f(double a, double b) {
        double r106572 = a;
        double r106573 = r106572 * r106572;
        double r106574 = b;
        double r106575 = r106574 * r106574;
        double r106576 = r106573 + r106575;
        double r106577 = 2.0;
        double r106578 = pow(r106576, r106577);
        double r106579 = 1.0;
        double r106580 = r106572 + r106579;
        double r106581 = r106573 * r106580;
        double r106582 = 3.0;
        double r106583 = r106582 * r106572;
        double r106584 = r106579 - r106583;
        double r106585 = r106575 * r106584;
        double r106586 = r106581 + r106585;
        double r106587 = 4.0;
        double r106588 = r106586 * r106587;
        double r106589 = r106578 + r106588;
        double r106590 = r106589 - r106579;
        return r106590;
}

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. Final simplification0.2

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

Reproduce

herbie shell --seed 2019194 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))