Average Error: 0.2 → 0.2
Time: 7.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 r355410 = a;
        double r355411 = r355410 * r355410;
        double r355412 = b;
        double r355413 = r355412 * r355412;
        double r355414 = r355411 + r355413;
        double r355415 = 2.0;
        double r355416 = pow(r355414, r355415);
        double r355417 = 4.0;
        double r355418 = 1.0;
        double r355419 = r355418 - r355410;
        double r355420 = r355411 * r355419;
        double r355421 = 3.0;
        double r355422 = r355421 + r355410;
        double r355423 = r355413 * r355422;
        double r355424 = r355420 + r355423;
        double r355425 = r355417 * r355424;
        double r355426 = r355416 + r355425;
        double r355427 = r355426 - r355418;
        return r355427;
}

double f(double a, double b) {
        double r355428 = a;
        double r355429 = r355428 * r355428;
        double r355430 = b;
        double r355431 = r355430 * r355430;
        double r355432 = r355429 + r355431;
        double r355433 = 2.0;
        double r355434 = pow(r355432, r355433);
        double r355435 = 4.0;
        double r355436 = 1.0;
        double r355437 = r355436 - r355428;
        double r355438 = r355429 * r355437;
        double r355439 = 3.0;
        double r355440 = r355439 + r355428;
        double r355441 = r355431 * r355440;
        double r355442 = r355438 + r355441;
        double r355443 = r355435 * r355442;
        double r355444 = r355434 + r355443;
        double r355445 = r355444 - r355436;
        return r355445;
}

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 2020020 +o rules:numerics
(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))