Average Error: 0.2 → 0.2
Time: 23.1s
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 r86448 = a;
        double r86449 = r86448 * r86448;
        double r86450 = b;
        double r86451 = r86450 * r86450;
        double r86452 = r86449 + r86451;
        double r86453 = 2.0;
        double r86454 = pow(r86452, r86453);
        double r86455 = 4.0;
        double r86456 = 1.0;
        double r86457 = r86456 + r86448;
        double r86458 = r86449 * r86457;
        double r86459 = 3.0;
        double r86460 = r86459 * r86448;
        double r86461 = r86456 - r86460;
        double r86462 = r86451 * r86461;
        double r86463 = r86458 + r86462;
        double r86464 = r86455 * r86463;
        double r86465 = r86454 + r86464;
        double r86466 = r86465 - r86456;
        return r86466;
}

double f(double a, double b) {
        double r86467 = a;
        double r86468 = r86467 * r86467;
        double r86469 = b;
        double r86470 = r86469 * r86469;
        double r86471 = r86468 + r86470;
        double r86472 = 2.0;
        double r86473 = pow(r86471, r86472);
        double r86474 = 4.0;
        double r86475 = 1.0;
        double r86476 = r86475 + r86467;
        double r86477 = r86468 * r86476;
        double r86478 = 3.0;
        double r86479 = r86478 * r86467;
        double r86480 = r86475 - r86479;
        double r86481 = r86470 * r86480;
        double r86482 = r86477 + r86481;
        double r86483 = r86474 * r86482;
        double r86484 = r86473 + r86483;
        double r86485 = r86484 - r86475;
        return r86485;
}

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