Average Error: 0.2 → 0.2
Time: 50.0s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 + a\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right)\right) - 1.0\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a \cdot a\right) \cdot \left(a + 1.0\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right) \cdot 4.0\right) - 1.0\]
\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 + a\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right)\right) - 1.0
\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a \cdot a\right) \cdot \left(a + 1.0\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right) \cdot 4.0\right) - 1.0
double f(double a, double b) {
        double r9161247 = a;
        double r9161248 = r9161247 * r9161247;
        double r9161249 = b;
        double r9161250 = r9161249 * r9161249;
        double r9161251 = r9161248 + r9161250;
        double r9161252 = 2.0;
        double r9161253 = pow(r9161251, r9161252);
        double r9161254 = 4.0;
        double r9161255 = 1.0;
        double r9161256 = r9161255 + r9161247;
        double r9161257 = r9161248 * r9161256;
        double r9161258 = 3.0;
        double r9161259 = r9161258 * r9161247;
        double r9161260 = r9161255 - r9161259;
        double r9161261 = r9161250 * r9161260;
        double r9161262 = r9161257 + r9161261;
        double r9161263 = r9161254 * r9161262;
        double r9161264 = r9161253 + r9161263;
        double r9161265 = r9161264 - r9161255;
        return r9161265;
}

double f(double a, double b) {
        double r9161266 = a;
        double r9161267 = r9161266 * r9161266;
        double r9161268 = b;
        double r9161269 = r9161268 * r9161268;
        double r9161270 = r9161267 + r9161269;
        double r9161271 = 2.0;
        double r9161272 = pow(r9161270, r9161271);
        double r9161273 = 1.0;
        double r9161274 = r9161266 + r9161273;
        double r9161275 = r9161267 * r9161274;
        double r9161276 = 3.0;
        double r9161277 = r9161276 * r9161266;
        double r9161278 = r9161273 - r9161277;
        double r9161279 = r9161269 * r9161278;
        double r9161280 = r9161275 + r9161279;
        double r9161281 = 4.0;
        double r9161282 = r9161280 * r9161281;
        double r9161283 = r9161272 + r9161282;
        double r9161284 = r9161283 - r9161273;
        return r9161284;
}

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.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 + a\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right)\right) - 1.0\]
  2. Final simplification0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a \cdot a\right) \cdot \left(a + 1.0\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right) \cdot 4.0\right) - 1.0\]

Reproduce

herbie shell --seed 2019165 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))