Average Error: 0.2 → 0.2
Time: 22.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(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 r166297 = a;
        double r166298 = r166297 * r166297;
        double r166299 = b;
        double r166300 = r166299 * r166299;
        double r166301 = r166298 + r166300;
        double r166302 = 2.0;
        double r166303 = pow(r166301, r166302);
        double r166304 = 4.0;
        double r166305 = 1.0;
        double r166306 = r166305 + r166297;
        double r166307 = r166298 * r166306;
        double r166308 = 3.0;
        double r166309 = r166308 * r166297;
        double r166310 = r166305 - r166309;
        double r166311 = r166300 * r166310;
        double r166312 = r166307 + r166311;
        double r166313 = r166304 * r166312;
        double r166314 = r166303 + r166313;
        double r166315 = r166314 - r166305;
        return r166315;
}

double f(double a, double b) {
        double r166316 = a;
        double r166317 = r166316 * r166316;
        double r166318 = b;
        double r166319 = r166318 * r166318;
        double r166320 = r166317 + r166319;
        double r166321 = 2.0;
        double r166322 = pow(r166320, r166321);
        double r166323 = 4.0;
        double r166324 = 1.0;
        double r166325 = r166324 + r166316;
        double r166326 = r166317 * r166325;
        double r166327 = 3.0;
        double r166328 = r166327 * r166316;
        double r166329 = r166324 - r166328;
        double r166330 = r166319 * r166329;
        double r166331 = r166326 + r166330;
        double r166332 = r166323 * r166331;
        double r166333 = r166322 + r166332;
        double r166334 = r166333 - r166324;
        return r166334;
}

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