Average Error: 0.2 → 0.2
Time: 17.1s
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 r226915 = a;
        double r226916 = r226915 * r226915;
        double r226917 = b;
        double r226918 = r226917 * r226917;
        double r226919 = r226916 + r226918;
        double r226920 = 2.0;
        double r226921 = pow(r226919, r226920);
        double r226922 = 4.0;
        double r226923 = 1.0;
        double r226924 = r226923 - r226915;
        double r226925 = r226916 * r226924;
        double r226926 = 3.0;
        double r226927 = r226926 + r226915;
        double r226928 = r226918 * r226927;
        double r226929 = r226925 + r226928;
        double r226930 = r226922 * r226929;
        double r226931 = r226921 + r226930;
        double r226932 = r226931 - r226923;
        return r226932;
}

double f(double a, double b) {
        double r226933 = a;
        double r226934 = r226933 * r226933;
        double r226935 = b;
        double r226936 = r226935 * r226935;
        double r226937 = r226934 + r226936;
        double r226938 = 2.0;
        double r226939 = pow(r226937, r226938);
        double r226940 = 4.0;
        double r226941 = 1.0;
        double r226942 = r226941 - r226933;
        double r226943 = r226934 * r226942;
        double r226944 = 3.0;
        double r226945 = r226944 + r226933;
        double r226946 = r226936 * r226945;
        double r226947 = r226943 + r226946;
        double r226948 = r226940 * r226947;
        double r226949 = r226939 + r226948;
        double r226950 = r226949 - r226941;
        return r226950;
}

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