Average Error: 0.2 → 0.2
Time: 22.3s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\left(\left(b \cdot b\right) \cdot 4 + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\left(\left(b \cdot b\right) \cdot 4 + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1
double f(double a, double b) {
        double r6443981 = a;
        double r6443982 = r6443981 * r6443981;
        double r6443983 = b;
        double r6443984 = r6443983 * r6443983;
        double r6443985 = r6443982 + r6443984;
        double r6443986 = 2.0;
        double r6443987 = pow(r6443985, r6443986);
        double r6443988 = 4.0;
        double r6443989 = r6443988 * r6443984;
        double r6443990 = r6443987 + r6443989;
        double r6443991 = 1.0;
        double r6443992 = r6443990 - r6443991;
        return r6443992;
}

double f(double a, double b) {
        double r6443993 = b;
        double r6443994 = r6443993 * r6443993;
        double r6443995 = 4.0;
        double r6443996 = r6443994 * r6443995;
        double r6443997 = a;
        double r6443998 = r6443997 * r6443997;
        double r6443999 = r6443998 + r6443994;
        double r6444000 = 2.0;
        double r6444001 = pow(r6443999, r6444000);
        double r6444002 = r6443996 + r6444001;
        double r6444003 = 1.0;
        double r6444004 = r6444002 - r6444003;
        return r6444004;
}

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(b \cdot b\right)\right) - 1\]
  2. Final simplification0.2

    \[\leadsto \left(\left(b \cdot b\right) \cdot 4 + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))