Average Error: 0.2 → 0.2
Time: 12.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 r131494 = a;
        double r131495 = r131494 * r131494;
        double r131496 = b;
        double r131497 = r131496 * r131496;
        double r131498 = r131495 + r131497;
        double r131499 = 2.0;
        double r131500 = pow(r131498, r131499);
        double r131501 = 4.0;
        double r131502 = 1.0;
        double r131503 = r131502 + r131494;
        double r131504 = r131495 * r131503;
        double r131505 = 3.0;
        double r131506 = r131505 * r131494;
        double r131507 = r131502 - r131506;
        double r131508 = r131497 * r131507;
        double r131509 = r131504 + r131508;
        double r131510 = r131501 * r131509;
        double r131511 = r131500 + r131510;
        double r131512 = r131511 - r131502;
        return r131512;
}

double f(double a, double b) {
        double r131513 = a;
        double r131514 = r131513 * r131513;
        double r131515 = b;
        double r131516 = r131515 * r131515;
        double r131517 = r131514 + r131516;
        double r131518 = 2.0;
        double r131519 = pow(r131517, r131518);
        double r131520 = 4.0;
        double r131521 = 1.0;
        double r131522 = r131521 + r131513;
        double r131523 = 2.0;
        double r131524 = pow(r131513, r131523);
        double r131525 = r131522 * r131524;
        double r131526 = 3.0;
        double r131527 = r131526 * r131513;
        double r131528 = r131521 - r131527;
        double r131529 = r131516 * r131528;
        double r131530 = r131525 + r131529;
        double r131531 = r131520 * r131530;
        double r131532 = r131519 + r131531;
        double r131533 = r131532 - r131521;
        return r131533;
}

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