Average Error: 0.2 → 0.2
Time: 5.1s
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} + 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} + 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} + 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
double f(double a, double b) {
        double r304358 = a;
        double r304359 = r304358 * r304358;
        double r304360 = b;
        double r304361 = r304360 * r304360;
        double r304362 = r304359 + r304361;
        double r304363 = 2.0;
        double r304364 = pow(r304362, r304363);
        double r304365 = 4.0;
        double r304366 = 1.0;
        double r304367 = r304366 - r304358;
        double r304368 = r304359 * r304367;
        double r304369 = 3.0;
        double r304370 = r304369 + r304358;
        double r304371 = r304361 * r304370;
        double r304372 = r304368 + r304371;
        double r304373 = r304365 * r304372;
        double r304374 = r304364 + r304373;
        double r304375 = r304374 - r304366;
        return r304375;
}

double f(double a, double b) {
        double r304376 = a;
        double r304377 = r304376 * r304376;
        double r304378 = b;
        double r304379 = r304378 * r304378;
        double r304380 = r304377 + r304379;
        double r304381 = 2.0;
        double r304382 = pow(r304380, r304381);
        double r304383 = 4.0;
        double r304384 = 1.0;
        double r304385 = r304384 - r304376;
        double r304386 = r304377 * r304385;
        double r304387 = 3.0;
        double r304388 = r304387 + r304376;
        double r304389 = r304379 * r304388;
        double r304390 = r304386 + r304389;
        double r304391 = r304383 * r304390;
        double r304392 = r304382 + r304391;
        double r304393 = r304392 - r304384;
        return r304393;
}

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} + 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\]

Reproduce

herbie shell --seed 2020021 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))