Average Error: 0.2 → 0.2
Time: 6.0s
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 r352592 = a;
        double r352593 = r352592 * r352592;
        double r352594 = b;
        double r352595 = r352594 * r352594;
        double r352596 = r352593 + r352595;
        double r352597 = 2.0;
        double r352598 = pow(r352596, r352597);
        double r352599 = 4.0;
        double r352600 = 1.0;
        double r352601 = r352600 - r352592;
        double r352602 = r352593 * r352601;
        double r352603 = 3.0;
        double r352604 = r352603 + r352592;
        double r352605 = r352595 * r352604;
        double r352606 = r352602 + r352605;
        double r352607 = r352599 * r352606;
        double r352608 = r352598 + r352607;
        double r352609 = r352608 - r352600;
        return r352609;
}

double f(double a, double b) {
        double r352610 = a;
        double r352611 = r352610 * r352610;
        double r352612 = b;
        double r352613 = r352612 * r352612;
        double r352614 = r352611 + r352613;
        double r352615 = 2.0;
        double r352616 = pow(r352614, r352615);
        double r352617 = 4.0;
        double r352618 = 1.0;
        double r352619 = r352618 - r352610;
        double r352620 = r352611 * r352619;
        double r352621 = 3.0;
        double r352622 = r352621 + r352610;
        double r352623 = r352613 * r352622;
        double r352624 = r352620 + r352623;
        double r352625 = r352617 * r352624;
        double r352626 = r352616 + r352625;
        double r352627 = r352626 - r352618;
        return r352627;
}

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