Average Error: 0.2 → 0.2
Time: 20.5s
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({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) \cdot 4\right) + 4 \cdot \left(\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({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) \cdot 4\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r140369 = a;
        double r140370 = r140369 * r140369;
        double r140371 = b;
        double r140372 = r140371 * r140371;
        double r140373 = r140370 + r140372;
        double r140374 = 2.0;
        double r140375 = pow(r140373, r140374);
        double r140376 = 4.0;
        double r140377 = 1.0;
        double r140378 = r140377 + r140369;
        double r140379 = r140370 * r140378;
        double r140380 = 3.0;
        double r140381 = r140380 * r140369;
        double r140382 = r140377 - r140381;
        double r140383 = r140372 * r140382;
        double r140384 = r140379 + r140383;
        double r140385 = r140376 * r140384;
        double r140386 = r140375 + r140385;
        double r140387 = r140386 - r140377;
        return r140387;
}

double f(double a, double b) {
        double r140388 = a;
        double r140389 = r140388 * r140388;
        double r140390 = b;
        double r140391 = r140390 * r140390;
        double r140392 = r140389 + r140391;
        double r140393 = 2.0;
        double r140394 = pow(r140392, r140393);
        double r140395 = 1.0;
        double r140396 = r140395 + r140388;
        double r140397 = r140389 * r140396;
        double r140398 = 4.0;
        double r140399 = r140397 * r140398;
        double r140400 = r140394 + r140399;
        double r140401 = 3.0;
        double r140402 = r140401 * r140388;
        double r140403 = r140395 - r140402;
        double r140404 = r140391 * r140403;
        double r140405 = r140398 * r140404;
        double r140406 = r140400 + r140405;
        double r140407 = r140406 - r140395;
        return r140407;
}

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. Using strategy rm
  3. Applied distribute-lft-in0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + \color{blue}{\left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right)}\right) - 1\]
  4. Applied associate-+r+0.2

    \[\leadsto \color{blue}{\left(\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right)\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right)} - 1\]
  5. Simplified0.2

    \[\leadsto \left(\color{blue}{\left({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) \cdot 4\right)} + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  6. Final simplification0.2

    \[\leadsto \left(\left({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) \cdot 4\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]

Reproduce

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