Average Error: 0.2 → 0.2
Time: 20.3s
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(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(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(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r167588 = a;
        double r167589 = r167588 * r167588;
        double r167590 = b;
        double r167591 = r167590 * r167590;
        double r167592 = r167589 + r167591;
        double r167593 = 2.0;
        double r167594 = pow(r167592, r167593);
        double r167595 = 4.0;
        double r167596 = 1.0;
        double r167597 = r167596 + r167588;
        double r167598 = r167589 * r167597;
        double r167599 = 3.0;
        double r167600 = r167599 * r167588;
        double r167601 = r167596 - r167600;
        double r167602 = r167591 * r167601;
        double r167603 = r167598 + r167602;
        double r167604 = r167595 * r167603;
        double r167605 = r167594 + r167604;
        double r167606 = r167605 - r167596;
        return r167606;
}

double f(double a, double b) {
        double r167607 = a;
        double r167608 = r167607 * r167607;
        double r167609 = b;
        double r167610 = r167609 * r167609;
        double r167611 = r167608 + r167610;
        double r167612 = 2.0;
        double r167613 = pow(r167611, r167612);
        double r167614 = 4.0;
        double r167615 = 1.0;
        double r167616 = r167615 + r167607;
        double r167617 = r167608 * r167616;
        double r167618 = 3.0;
        double r167619 = r167618 * r167607;
        double r167620 = r167615 - r167619;
        double r167621 = r167610 * r167620;
        double r167622 = r167617 + r167621;
        double r167623 = r167614 * r167622;
        double r167624 = r167613 + r167623;
        double r167625 = r167624 - r167615;
        return r167625;
}

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} + 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\]

Reproduce

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