Average Error: 0.2 → 0.2
Time: 6.4s
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 r392473 = a;
        double r392474 = r392473 * r392473;
        double r392475 = b;
        double r392476 = r392475 * r392475;
        double r392477 = r392474 + r392476;
        double r392478 = 2.0;
        double r392479 = pow(r392477, r392478);
        double r392480 = 4.0;
        double r392481 = 1.0;
        double r392482 = r392481 - r392473;
        double r392483 = r392474 * r392482;
        double r392484 = 3.0;
        double r392485 = r392484 + r392473;
        double r392486 = r392476 * r392485;
        double r392487 = r392483 + r392486;
        double r392488 = r392480 * r392487;
        double r392489 = r392479 + r392488;
        double r392490 = r392489 - r392481;
        return r392490;
}

double f(double a, double b) {
        double r392491 = a;
        double r392492 = r392491 * r392491;
        double r392493 = b;
        double r392494 = r392493 * r392493;
        double r392495 = r392492 + r392494;
        double r392496 = 2.0;
        double r392497 = pow(r392495, r392496);
        double r392498 = 4.0;
        double r392499 = 1.0;
        double r392500 = r392499 - r392491;
        double r392501 = r392492 * r392500;
        double r392502 = 3.0;
        double r392503 = r392502 + r392491;
        double r392504 = r392494 * r392503;
        double r392505 = r392501 + r392504;
        double r392506 = r392498 * r392505;
        double r392507 = r392497 + r392506;
        double r392508 = r392507 - r392499;
        return r392508;
}

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