Average Error: 0.2 → 0.2
Time: 5.9s
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 r118993 = a;
        double r118994 = r118993 * r118993;
        double r118995 = b;
        double r118996 = r118995 * r118995;
        double r118997 = r118994 + r118996;
        double r118998 = 2.0;
        double r118999 = pow(r118997, r118998);
        double r119000 = 4.0;
        double r119001 = 1.0;
        double r119002 = r119001 + r118993;
        double r119003 = r118994 * r119002;
        double r119004 = 3.0;
        double r119005 = r119004 * r118993;
        double r119006 = r119001 - r119005;
        double r119007 = r118996 * r119006;
        double r119008 = r119003 + r119007;
        double r119009 = r119000 * r119008;
        double r119010 = r118999 + r119009;
        double r119011 = r119010 - r119001;
        return r119011;
}

double f(double a, double b) {
        double r119012 = a;
        double r119013 = r119012 * r119012;
        double r119014 = b;
        double r119015 = r119014 * r119014;
        double r119016 = r119013 + r119015;
        double r119017 = 2.0;
        double r119018 = pow(r119016, r119017);
        double r119019 = 4.0;
        double r119020 = 1.0;
        double r119021 = r119020 + r119012;
        double r119022 = r119013 * r119021;
        double r119023 = 3.0;
        double r119024 = r119023 * r119012;
        double r119025 = r119020 - r119024;
        double r119026 = r119015 * r119025;
        double r119027 = r119022 + r119026;
        double r119028 = r119019 * r119027;
        double r119029 = r119018 + r119028;
        double r119030 = r119029 - r119020;
        return r119030;
}

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