Average Error: 0.2 → 0.2
Time: 18.2s
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 r256467 = a;
        double r256468 = r256467 * r256467;
        double r256469 = b;
        double r256470 = r256469 * r256469;
        double r256471 = r256468 + r256470;
        double r256472 = 2.0;
        double r256473 = pow(r256471, r256472);
        double r256474 = 4.0;
        double r256475 = 1.0;
        double r256476 = r256475 + r256467;
        double r256477 = r256468 * r256476;
        double r256478 = 3.0;
        double r256479 = r256478 * r256467;
        double r256480 = r256475 - r256479;
        double r256481 = r256470 * r256480;
        double r256482 = r256477 + r256481;
        double r256483 = r256474 * r256482;
        double r256484 = r256473 + r256483;
        double r256485 = r256484 - r256475;
        return r256485;
}

double f(double a, double b) {
        double r256486 = a;
        double r256487 = r256486 * r256486;
        double r256488 = b;
        double r256489 = r256488 * r256488;
        double r256490 = r256487 + r256489;
        double r256491 = 2.0;
        double r256492 = pow(r256490, r256491);
        double r256493 = 1.0;
        double r256494 = r256486 + r256493;
        double r256495 = r256487 * r256494;
        double r256496 = 3.0;
        double r256497 = r256496 * r256486;
        double r256498 = r256493 - r256497;
        double r256499 = r256489 * r256498;
        double r256500 = r256495 + r256499;
        double r256501 = 4.0;
        double r256502 = r256500 * r256501;
        double r256503 = r256492 + r256502;
        double r256504 = r256503 - r256493;
        return r256504;
}

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