Average Error: 0.2 → 0.2
Time: 18.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 r156963 = a;
        double r156964 = r156963 * r156963;
        double r156965 = b;
        double r156966 = r156965 * r156965;
        double r156967 = r156964 + r156966;
        double r156968 = 2.0;
        double r156969 = pow(r156967, r156968);
        double r156970 = 4.0;
        double r156971 = 1.0;
        double r156972 = r156971 - r156963;
        double r156973 = r156964 * r156972;
        double r156974 = 3.0;
        double r156975 = r156974 + r156963;
        double r156976 = r156966 * r156975;
        double r156977 = r156973 + r156976;
        double r156978 = r156970 * r156977;
        double r156979 = r156969 + r156978;
        double r156980 = r156979 - r156971;
        return r156980;
}

double f(double a, double b) {
        double r156981 = a;
        double r156982 = r156981 * r156981;
        double r156983 = b;
        double r156984 = r156983 * r156983;
        double r156985 = r156982 + r156984;
        double r156986 = 2.0;
        double r156987 = pow(r156985, r156986);
        double r156988 = 4.0;
        double r156989 = 1.0;
        double r156990 = r156989 - r156981;
        double r156991 = r156982 * r156990;
        double r156992 = 3.0;
        double r156993 = r156992 + r156981;
        double r156994 = r156984 * r156993;
        double r156995 = r156991 + r156994;
        double r156996 = r156988 * r156995;
        double r156997 = r156987 + r156996;
        double r156998 = r156997 - r156989;
        return r156998;
}

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