Average Error: 0.2 → 0.2
Time: 25.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 r107925 = a;
        double r107926 = r107925 * r107925;
        double r107927 = b;
        double r107928 = r107927 * r107927;
        double r107929 = r107926 + r107928;
        double r107930 = 2.0;
        double r107931 = pow(r107929, r107930);
        double r107932 = 4.0;
        double r107933 = 1.0;
        double r107934 = r107933 + r107925;
        double r107935 = r107926 * r107934;
        double r107936 = 3.0;
        double r107937 = r107936 * r107925;
        double r107938 = r107933 - r107937;
        double r107939 = r107928 * r107938;
        double r107940 = r107935 + r107939;
        double r107941 = r107932 * r107940;
        double r107942 = r107931 + r107941;
        double r107943 = r107942 - r107933;
        return r107943;
}

double f(double a, double b) {
        double r107944 = a;
        double r107945 = r107944 * r107944;
        double r107946 = b;
        double r107947 = r107946 * r107946;
        double r107948 = r107945 + r107947;
        double r107949 = 2.0;
        double r107950 = pow(r107948, r107949);
        double r107951 = 4.0;
        double r107952 = 1.0;
        double r107953 = r107952 + r107944;
        double r107954 = r107945 * r107953;
        double r107955 = 3.0;
        double r107956 = r107955 * r107944;
        double r107957 = r107952 - r107956;
        double r107958 = r107947 * r107957;
        double r107959 = r107954 + r107958;
        double r107960 = r107951 * r107959;
        double r107961 = r107950 + r107960;
        double r107962 = r107961 - r107952;
        return r107962;
}

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