Average Error: 0.2 → 0.2
Time: 4.7s
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 r166391 = a;
        double r166392 = r166391 * r166391;
        double r166393 = b;
        double r166394 = r166393 * r166393;
        double r166395 = r166392 + r166394;
        double r166396 = 2.0;
        double r166397 = pow(r166395, r166396);
        double r166398 = 4.0;
        double r166399 = 1.0;
        double r166400 = r166399 + r166391;
        double r166401 = r166392 * r166400;
        double r166402 = 3.0;
        double r166403 = r166402 * r166391;
        double r166404 = r166399 - r166403;
        double r166405 = r166394 * r166404;
        double r166406 = r166401 + r166405;
        double r166407 = r166398 * r166406;
        double r166408 = r166397 + r166407;
        double r166409 = r166408 - r166399;
        return r166409;
}

double f(double a, double b) {
        double r166410 = a;
        double r166411 = r166410 * r166410;
        double r166412 = b;
        double r166413 = r166412 * r166412;
        double r166414 = r166411 + r166413;
        double r166415 = 2.0;
        double r166416 = pow(r166414, r166415);
        double r166417 = 4.0;
        double r166418 = 1.0;
        double r166419 = r166418 + r166410;
        double r166420 = r166411 * r166419;
        double r166421 = 3.0;
        double r166422 = r166421 * r166410;
        double r166423 = r166418 - r166422;
        double r166424 = r166413 * r166423;
        double r166425 = r166420 + r166424;
        double r166426 = r166417 * r166425;
        double r166427 = r166416 + r166426;
        double r166428 = r166427 - r166418;
        return r166428;
}

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