Average Error: 0.2 → 0.2
Time: 6.5s
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 r221994 = a;
        double r221995 = r221994 * r221994;
        double r221996 = b;
        double r221997 = r221996 * r221996;
        double r221998 = r221995 + r221997;
        double r221999 = 2.0;
        double r222000 = pow(r221998, r221999);
        double r222001 = 4.0;
        double r222002 = 1.0;
        double r222003 = r222002 - r221994;
        double r222004 = r221995 * r222003;
        double r222005 = 3.0;
        double r222006 = r222005 + r221994;
        double r222007 = r221997 * r222006;
        double r222008 = r222004 + r222007;
        double r222009 = r222001 * r222008;
        double r222010 = r222000 + r222009;
        double r222011 = r222010 - r222002;
        return r222011;
}

double f(double a, double b) {
        double r222012 = a;
        double r222013 = r222012 * r222012;
        double r222014 = b;
        double r222015 = r222014 * r222014;
        double r222016 = r222013 + r222015;
        double r222017 = 2.0;
        double r222018 = pow(r222016, r222017);
        double r222019 = 4.0;
        double r222020 = 1.0;
        double r222021 = r222020 - r222012;
        double r222022 = r222013 * r222021;
        double r222023 = 3.0;
        double r222024 = r222023 + r222012;
        double r222025 = r222015 * r222024;
        double r222026 = r222022 + r222025;
        double r222027 = r222019 * r222026;
        double r222028 = r222018 + r222027;
        double r222029 = r222028 - r222020;
        return r222029;
}

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