Average Error: 0.2 → 0.2
Time: 4.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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(a \cdot \left(a \cdot \left(1 + a\right)\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(a \cdot \left(a \cdot \left(1 + a\right)\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r164576 = a;
        double r164577 = r164576 * r164576;
        double r164578 = b;
        double r164579 = r164578 * r164578;
        double r164580 = r164577 + r164579;
        double r164581 = 2.0;
        double r164582 = pow(r164580, r164581);
        double r164583 = 4.0;
        double r164584 = 1.0;
        double r164585 = r164584 + r164576;
        double r164586 = r164577 * r164585;
        double r164587 = 3.0;
        double r164588 = r164587 * r164576;
        double r164589 = r164584 - r164588;
        double r164590 = r164579 * r164589;
        double r164591 = r164586 + r164590;
        double r164592 = r164583 * r164591;
        double r164593 = r164582 + r164592;
        double r164594 = r164593 - r164584;
        return r164594;
}

double f(double a, double b) {
        double r164595 = a;
        double r164596 = r164595 * r164595;
        double r164597 = b;
        double r164598 = r164597 * r164597;
        double r164599 = r164596 + r164598;
        double r164600 = 2.0;
        double r164601 = pow(r164599, r164600);
        double r164602 = 4.0;
        double r164603 = 1.0;
        double r164604 = r164603 + r164595;
        double r164605 = r164595 * r164604;
        double r164606 = r164595 * r164605;
        double r164607 = 3.0;
        double r164608 = r164607 * r164595;
        double r164609 = r164603 - r164608;
        double r164610 = r164598 * r164609;
        double r164611 = r164606 + r164610;
        double r164612 = r164602 * r164611;
        double r164613 = r164601 + r164612;
        double r164614 = r164613 - r164603;
        return r164614;
}

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(1 - 3 \cdot a\right)\right)\right) - 1\]
  2. Using strategy rm
  3. Applied associate-*l*0.2

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

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

Reproduce

herbie shell --seed 2020059 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))