Average Error: 0.2 → 0.2
Time: 22.6s
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 r144973 = a;
        double r144974 = r144973 * r144973;
        double r144975 = b;
        double r144976 = r144975 * r144975;
        double r144977 = r144974 + r144976;
        double r144978 = 2.0;
        double r144979 = pow(r144977, r144978);
        double r144980 = 4.0;
        double r144981 = 1.0;
        double r144982 = r144981 - r144973;
        double r144983 = r144974 * r144982;
        double r144984 = 3.0;
        double r144985 = r144984 + r144973;
        double r144986 = r144976 * r144985;
        double r144987 = r144983 + r144986;
        double r144988 = r144980 * r144987;
        double r144989 = r144979 + r144988;
        double r144990 = r144989 - r144981;
        return r144990;
}

double f(double a, double b) {
        double r144991 = a;
        double r144992 = r144991 * r144991;
        double r144993 = b;
        double r144994 = r144993 * r144993;
        double r144995 = r144992 + r144994;
        double r144996 = 2.0;
        double r144997 = pow(r144995, r144996);
        double r144998 = 4.0;
        double r144999 = 1.0;
        double r145000 = r144999 - r144991;
        double r145001 = r144992 * r145000;
        double r145002 = 3.0;
        double r145003 = r145002 + r144991;
        double r145004 = r144994 * r145003;
        double r145005 = r145001 + r145004;
        double r145006 = r144998 * r145005;
        double r145007 = r144997 + r145006;
        double r145008 = r145007 - r144999;
        return r145008;
}

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