Average Error: 0.2 → 0.2
Time: 20.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 r353296 = a;
        double r353297 = r353296 * r353296;
        double r353298 = b;
        double r353299 = r353298 * r353298;
        double r353300 = r353297 + r353299;
        double r353301 = 2.0;
        double r353302 = pow(r353300, r353301);
        double r353303 = 4.0;
        double r353304 = 1.0;
        double r353305 = r353304 + r353296;
        double r353306 = r353297 * r353305;
        double r353307 = 3.0;
        double r353308 = r353307 * r353296;
        double r353309 = r353304 - r353308;
        double r353310 = r353299 * r353309;
        double r353311 = r353306 + r353310;
        double r353312 = r353303 * r353311;
        double r353313 = r353302 + r353312;
        double r353314 = r353313 - r353304;
        return r353314;
}

double f(double a, double b) {
        double r353315 = a;
        double r353316 = r353315 * r353315;
        double r353317 = b;
        double r353318 = r353317 * r353317;
        double r353319 = r353316 + r353318;
        double r353320 = 2.0;
        double r353321 = pow(r353319, r353320);
        double r353322 = 4.0;
        double r353323 = 1.0;
        double r353324 = r353323 + r353315;
        double r353325 = r353316 * r353324;
        double r353326 = 3.0;
        double r353327 = r353326 * r353315;
        double r353328 = r353323 - r353327;
        double r353329 = r353318 * r353328;
        double r353330 = r353325 + r353329;
        double r353331 = r353322 * r353330;
        double r353332 = r353321 + r353331;
        double r353333 = r353332 - r353323;
        return r353333;
}

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