Average Error: 0.2 → 0.2
Time: 18.0s
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(\left(a \cdot a\right) \cdot 1 + {a}^{3}\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(\left(a \cdot a\right) \cdot 1 + {a}^{3}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r102924 = a;
        double r102925 = r102924 * r102924;
        double r102926 = b;
        double r102927 = r102926 * r102926;
        double r102928 = r102925 + r102927;
        double r102929 = 2.0;
        double r102930 = pow(r102928, r102929);
        double r102931 = 4.0;
        double r102932 = 1.0;
        double r102933 = r102932 + r102924;
        double r102934 = r102925 * r102933;
        double r102935 = 3.0;
        double r102936 = r102935 * r102924;
        double r102937 = r102932 - r102936;
        double r102938 = r102927 * r102937;
        double r102939 = r102934 + r102938;
        double r102940 = r102931 * r102939;
        double r102941 = r102930 + r102940;
        double r102942 = r102941 - r102932;
        return r102942;
}

double f(double a, double b) {
        double r102943 = a;
        double r102944 = r102943 * r102943;
        double r102945 = b;
        double r102946 = r102945 * r102945;
        double r102947 = r102944 + r102946;
        double r102948 = 2.0;
        double r102949 = pow(r102947, r102948);
        double r102950 = 4.0;
        double r102951 = 1.0;
        double r102952 = r102944 * r102951;
        double r102953 = 3.0;
        double r102954 = pow(r102943, r102953);
        double r102955 = r102952 + r102954;
        double r102956 = 3.0;
        double r102957 = r102956 * r102943;
        double r102958 = r102951 - r102957;
        double r102959 = r102946 * r102958;
        double r102960 = r102955 + r102959;
        double r102961 = r102950 * r102960;
        double r102962 = r102949 + r102961;
        double r102963 = r102962 - r102951;
        return r102963;
}

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. Using strategy rm
  3. Applied distribute-lft-in0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\color{blue}{\left(\left(a \cdot a\right) \cdot 1 + \left(a \cdot a\right) \cdot a\right)} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  4. Simplified0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(\left(a \cdot a\right) \cdot 1 + \color{blue}{{a}^{3}}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  5. Final simplification0.2

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

Reproduce

herbie shell --seed 2019195 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))