Average Error: 0.2 → 0.2
Time: 6.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 r349403 = a;
        double r349404 = r349403 * r349403;
        double r349405 = b;
        double r349406 = r349405 * r349405;
        double r349407 = r349404 + r349406;
        double r349408 = 2.0;
        double r349409 = pow(r349407, r349408);
        double r349410 = 4.0;
        double r349411 = 1.0;
        double r349412 = r349411 - r349403;
        double r349413 = r349404 * r349412;
        double r349414 = 3.0;
        double r349415 = r349414 + r349403;
        double r349416 = r349406 * r349415;
        double r349417 = r349413 + r349416;
        double r349418 = r349410 * r349417;
        double r349419 = r349409 + r349418;
        double r349420 = r349419 - r349411;
        return r349420;
}

double f(double a, double b) {
        double r349421 = a;
        double r349422 = r349421 * r349421;
        double r349423 = b;
        double r349424 = r349423 * r349423;
        double r349425 = r349422 + r349424;
        double r349426 = 2.0;
        double r349427 = pow(r349425, r349426);
        double r349428 = 4.0;
        double r349429 = 1.0;
        double r349430 = r349429 - r349421;
        double r349431 = r349422 * r349430;
        double r349432 = 3.0;
        double r349433 = r349432 + r349421;
        double r349434 = r349424 * r349433;
        double r349435 = r349431 + r349434;
        double r349436 = r349428 * r349435;
        double r349437 = r349427 + r349436;
        double r349438 = r349437 - r349429;
        return r349438;
}

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