Average Error: 0.2 → 0.2
Time: 5.2s
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(3 + 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(3 + 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(3 + 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(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r369276 = a;
        double r369277 = r369276 * r369276;
        double r369278 = b;
        double r369279 = r369278 * r369278;
        double r369280 = r369277 + r369279;
        double r369281 = 2.0;
        double r369282 = pow(r369280, r369281);
        double r369283 = 4.0;
        double r369284 = 1.0;
        double r369285 = r369284 - r369276;
        double r369286 = r369277 * r369285;
        double r369287 = 3.0;
        double r369288 = r369287 + r369276;
        double r369289 = r369279 * r369288;
        double r369290 = r369286 + r369289;
        double r369291 = r369283 * r369290;
        double r369292 = r369282 + r369291;
        double r369293 = r369292 - r369284;
        return r369293;
}

double f(double a, double b) {
        double r369294 = a;
        double r369295 = r369294 * r369294;
        double r369296 = b;
        double r369297 = r369296 * r369296;
        double r369298 = r369295 + r369297;
        double r369299 = 2.0;
        double r369300 = pow(r369298, r369299);
        double r369301 = 4.0;
        double r369302 = 1.0;
        double r369303 = r369302 - r369294;
        double r369304 = r369295 * r369303;
        double r369305 = 3.0;
        double r369306 = r369305 + r369294;
        double r369307 = r369297 * r369306;
        double r369308 = r369304 + r369307;
        double r369309 = r369301 * r369308;
        double r369310 = r369300 + r369309;
        double r369311 = r369310 - r369302;
        return r369311;
}

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

Reproduce

herbie shell --seed 2020039 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))