Average Error: 0.2 → 0.2
Time: 18.2s
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 r254518 = a;
        double r254519 = r254518 * r254518;
        double r254520 = b;
        double r254521 = r254520 * r254520;
        double r254522 = r254519 + r254521;
        double r254523 = 2.0;
        double r254524 = pow(r254522, r254523);
        double r254525 = 4.0;
        double r254526 = 1.0;
        double r254527 = r254526 - r254518;
        double r254528 = r254519 * r254527;
        double r254529 = 3.0;
        double r254530 = r254529 + r254518;
        double r254531 = r254521 * r254530;
        double r254532 = r254528 + r254531;
        double r254533 = r254525 * r254532;
        double r254534 = r254524 + r254533;
        double r254535 = r254534 - r254526;
        return r254535;
}

double f(double a, double b) {
        double r254536 = a;
        double r254537 = r254536 * r254536;
        double r254538 = b;
        double r254539 = r254538 * r254538;
        double r254540 = r254537 + r254539;
        double r254541 = 2.0;
        double r254542 = pow(r254540, r254541);
        double r254543 = 4.0;
        double r254544 = 1.0;
        double r254545 = r254544 - r254536;
        double r254546 = r254537 * r254545;
        double r254547 = 3.0;
        double r254548 = r254547 + r254536;
        double r254549 = r254539 * r254548;
        double r254550 = r254546 + r254549;
        double r254551 = r254543 * r254550;
        double r254552 = r254542 + r254551;
        double r254553 = r254552 - r254544;
        return r254553;
}

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