Average Error: 0.2 → 0.2
Time: 26.0s
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(3 + a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 - 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(3 + a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r7548371 = a;
        double r7548372 = r7548371 * r7548371;
        double r7548373 = b;
        double r7548374 = r7548373 * r7548373;
        double r7548375 = r7548372 + r7548374;
        double r7548376 = 2.0;
        double r7548377 = pow(r7548375, r7548376);
        double r7548378 = 4.0;
        double r7548379 = 1.0;
        double r7548380 = r7548379 - r7548371;
        double r7548381 = r7548372 * r7548380;
        double r7548382 = 3.0;
        double r7548383 = r7548382 + r7548371;
        double r7548384 = r7548374 * r7548383;
        double r7548385 = r7548381 + r7548384;
        double r7548386 = r7548378 * r7548385;
        double r7548387 = r7548377 + r7548386;
        double r7548388 = r7548387 - r7548379;
        return r7548388;
}

double f(double a, double b) {
        double r7548389 = a;
        double r7548390 = r7548389 * r7548389;
        double r7548391 = b;
        double r7548392 = r7548391 * r7548391;
        double r7548393 = r7548390 + r7548392;
        double r7548394 = 2.0;
        double r7548395 = pow(r7548393, r7548394);
        double r7548396 = 3.0;
        double r7548397 = r7548389 + r7548396;
        double r7548398 = r7548397 * r7548392;
        double r7548399 = 1.0;
        double r7548400 = r7548399 - r7548389;
        double r7548401 = r7548390 * r7548400;
        double r7548402 = r7548398 + r7548401;
        double r7548403 = 4.0;
        double r7548404 = r7548402 * r7548403;
        double r7548405 = r7548395 + r7548404;
        double r7548406 = r7548405 - r7548399;
        return r7548406;
}

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(3 + a\right)\right)\right) - 1\]
  2. Final simplification0.2

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

Reproduce

herbie shell --seed 2019170 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) 1.0))