Average Error: 0.2 → 0.2
Time: 19.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(3 + a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(4 \cdot {a}^{2} + 12 \cdot {b}^{2}\right) - 4 \cdot {a}^{3}\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} + \left(\left(4 \cdot {a}^{2} + 12 \cdot {b}^{2}\right) - 4 \cdot {a}^{3}\right)\right) - 1
double f(double a, double b) {
        double r212348 = a;
        double r212349 = r212348 * r212348;
        double r212350 = b;
        double r212351 = r212350 * r212350;
        double r212352 = r212349 + r212351;
        double r212353 = 2.0;
        double r212354 = pow(r212352, r212353);
        double r212355 = 4.0;
        double r212356 = 1.0;
        double r212357 = r212356 - r212348;
        double r212358 = r212349 * r212357;
        double r212359 = 3.0;
        double r212360 = r212359 + r212348;
        double r212361 = r212351 * r212360;
        double r212362 = r212358 + r212361;
        double r212363 = r212355 * r212362;
        double r212364 = r212354 + r212363;
        double r212365 = r212364 - r212356;
        return r212365;
}

double f(double a, double b) {
        double r212366 = a;
        double r212367 = r212366 * r212366;
        double r212368 = b;
        double r212369 = r212368 * r212368;
        double r212370 = r212367 + r212369;
        double r212371 = 2.0;
        double r212372 = pow(r212370, r212371);
        double r212373 = 4.0;
        double r212374 = 2.0;
        double r212375 = pow(r212366, r212374);
        double r212376 = r212373 * r212375;
        double r212377 = 12.0;
        double r212378 = pow(r212368, r212374);
        double r212379 = r212377 * r212378;
        double r212380 = r212376 + r212379;
        double r212381 = 3.0;
        double r212382 = pow(r212366, r212381);
        double r212383 = r212373 * r212382;
        double r212384 = r212380 - r212383;
        double r212385 = r212372 + r212384;
        double r212386 = 1.0;
        double r212387 = r212385 - r212386;
        return r212387;
}

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. Taylor expanded around 0 0.2

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

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

Reproduce

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