Average Error: 0.2 → 0.2
Time: 17.4s
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 r144308 = a;
        double r144309 = r144308 * r144308;
        double r144310 = b;
        double r144311 = r144310 * r144310;
        double r144312 = r144309 + r144311;
        double r144313 = 2.0;
        double r144314 = pow(r144312, r144313);
        double r144315 = 4.0;
        double r144316 = 1.0;
        double r144317 = r144316 + r144308;
        double r144318 = r144309 * r144317;
        double r144319 = 3.0;
        double r144320 = r144319 * r144308;
        double r144321 = r144316 - r144320;
        double r144322 = r144311 * r144321;
        double r144323 = r144318 + r144322;
        double r144324 = r144315 * r144323;
        double r144325 = r144314 + r144324;
        double r144326 = r144325 - r144316;
        return r144326;
}

double f(double a, double b) {
        double r144327 = a;
        double r144328 = r144327 * r144327;
        double r144329 = b;
        double r144330 = r144329 * r144329;
        double r144331 = r144328 + r144330;
        double r144332 = 2.0;
        double r144333 = pow(r144331, r144332);
        double r144334 = 4.0;
        double r144335 = 1.0;
        double r144336 = r144335 + r144327;
        double r144337 = r144328 * r144336;
        double r144338 = 3.0;
        double r144339 = r144338 * r144327;
        double r144340 = r144335 - r144339;
        double r144341 = r144330 * r144340;
        double r144342 = r144337 + r144341;
        double r144343 = r144334 * r144342;
        double r144344 = r144333 + r144343;
        double r144345 = r144344 - r144335;
        return r144345;
}

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