Average Error: 0.2 → 0.2
Time: 18.6s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
double f(double a, double b) {
        double r115240 = a;
        double r115241 = r115240 * r115240;
        double r115242 = b;
        double r115243 = r115242 * r115242;
        double r115244 = r115241 + r115243;
        double r115245 = 2.0;
        double r115246 = pow(r115244, r115245);
        double r115247 = 4.0;
        double r115248 = r115247 * r115243;
        double r115249 = r115246 + r115248;
        double r115250 = 1.0;
        double r115251 = r115249 - r115250;
        return r115251;
}

double f(double a, double b) {
        double r115252 = a;
        double r115253 = r115252 * r115252;
        double r115254 = b;
        double r115255 = r115254 * r115254;
        double r115256 = r115253 + r115255;
        double r115257 = 2.0;
        double r115258 = pow(r115256, r115257);
        double r115259 = 4.0;
        double r115260 = r115259 * r115255;
        double r115261 = r115258 + r115260;
        double r115262 = 1.0;
        double r115263 = r115261 - r115262;
        return r115263;
}

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(b \cdot b\right)\right) - 1\]
  2. Final simplification0.2

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

Reproduce

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