Average Error: 0.2 → 0.2
Time: 6.8s
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 r436966 = a;
        double r436967 = r436966 * r436966;
        double r436968 = b;
        double r436969 = r436968 * r436968;
        double r436970 = r436967 + r436969;
        double r436971 = 2.0;
        double r436972 = pow(r436970, r436971);
        double r436973 = 4.0;
        double r436974 = 1.0;
        double r436975 = r436974 + r436966;
        double r436976 = r436967 * r436975;
        double r436977 = 3.0;
        double r436978 = r436977 * r436966;
        double r436979 = r436974 - r436978;
        double r436980 = r436969 * r436979;
        double r436981 = r436976 + r436980;
        double r436982 = r436973 * r436981;
        double r436983 = r436972 + r436982;
        double r436984 = r436983 - r436974;
        return r436984;
}

double f(double a, double b) {
        double r436985 = a;
        double r436986 = r436985 * r436985;
        double r436987 = b;
        double r436988 = r436987 * r436987;
        double r436989 = r436986 + r436988;
        double r436990 = 2.0;
        double r436991 = pow(r436989, r436990);
        double r436992 = 4.0;
        double r436993 = 1.0;
        double r436994 = r436993 + r436985;
        double r436995 = r436986 * r436994;
        double r436996 = 3.0;
        double r436997 = r436996 * r436985;
        double r436998 = r436993 - r436997;
        double r436999 = r436988 * r436998;
        double r437000 = r436995 + r436999;
        double r437001 = r436992 * r437000;
        double r437002 = r436991 + r437001;
        double r437003 = r437002 - r436993;
        return r437003;
}

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 2019353 +o rules:numerics
(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))