Average Error: 0.2 → 0.2
Time: 5.8s
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(\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(\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(\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
double f(double a, double b) {
        double r301251 = a;
        double r301252 = r301251 * r301251;
        double r301253 = b;
        double r301254 = r301253 * r301253;
        double r301255 = r301252 + r301254;
        double r301256 = 2.0;
        double r301257 = pow(r301255, r301256);
        double r301258 = 4.0;
        double r301259 = 1.0;
        double r301260 = r301259 + r301251;
        double r301261 = r301252 * r301260;
        double r301262 = 3.0;
        double r301263 = r301262 * r301251;
        double r301264 = r301259 - r301263;
        double r301265 = r301254 * r301264;
        double r301266 = r301261 + r301265;
        double r301267 = r301258 * r301266;
        double r301268 = r301257 + r301267;
        double r301269 = r301268 - r301259;
        return r301269;
}

double f(double a, double b) {
        double r301270 = a;
        double r301271 = r301270 * r301270;
        double r301272 = b;
        double r301273 = r301272 * r301272;
        double r301274 = r301271 + r301273;
        double r301275 = 2.0;
        double r301276 = pow(r301274, r301275);
        double r301277 = 4.0;
        double r301278 = 1.0;
        double r301279 = r301278 + r301270;
        double r301280 = r301271 * r301279;
        double r301281 = 3.0;
        double r301282 = r301281 * r301270;
        double r301283 = r301278 - r301282;
        double r301284 = r301273 * r301283;
        double r301285 = r301280 + r301284;
        double r301286 = r301277 * r301285;
        double r301287 = r301276 + r301286;
        double r301288 = r301287 - r301278;
        return r301288;
}

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. 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(1 - 3 \cdot a\right)\right)\right) - 1\]

Reproduce

herbie shell --seed 2020021 
(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))