Average Error: 0.2 → 0.2
Time: 6.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(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 r280968 = a;
        double r280969 = r280968 * r280968;
        double r280970 = b;
        double r280971 = r280970 * r280970;
        double r280972 = r280969 + r280971;
        double r280973 = 2.0;
        double r280974 = pow(r280972, r280973);
        double r280975 = 4.0;
        double r280976 = 1.0;
        double r280977 = r280976 - r280968;
        double r280978 = r280969 * r280977;
        double r280979 = 3.0;
        double r280980 = r280979 + r280968;
        double r280981 = r280971 * r280980;
        double r280982 = r280978 + r280981;
        double r280983 = r280975 * r280982;
        double r280984 = r280974 + r280983;
        double r280985 = r280984 - r280976;
        return r280985;
}

double f(double a, double b) {
        double r280986 = a;
        double r280987 = r280986 * r280986;
        double r280988 = b;
        double r280989 = r280988 * r280988;
        double r280990 = r280987 + r280989;
        double r280991 = 2.0;
        double r280992 = pow(r280990, r280991);
        double r280993 = 4.0;
        double r280994 = 1.0;
        double r280995 = r280994 - r280986;
        double r280996 = r280987 * r280995;
        double r280997 = 3.0;
        double r280998 = r280997 + r280986;
        double r280999 = r280989 * r280998;
        double r281000 = r280996 + r280999;
        double r281001 = r280993 * r281000;
        double r281002 = r280992 + r281001;
        double r281003 = r281002 - r280994;
        return r281003;
}

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