Average Error: 0.2 → 0.4
Time: 15.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) + \frac{\left(b \cdot b\right) \cdot \left({3}^{3} + {a}^{3}\right)}{3 \cdot 3 + \left(a \cdot a - 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(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) + \frac{\left(b \cdot b\right) \cdot \left({3}^{3} + {a}^{3}\right)}{3 \cdot 3 + \left(a \cdot a - 3 \cdot a\right)}\right)\right) - 1
double f(double a, double b) {
        double r387910 = a;
        double r387911 = r387910 * r387910;
        double r387912 = b;
        double r387913 = r387912 * r387912;
        double r387914 = r387911 + r387913;
        double r387915 = 2.0;
        double r387916 = pow(r387914, r387915);
        double r387917 = 4.0;
        double r387918 = 1.0;
        double r387919 = r387918 - r387910;
        double r387920 = r387911 * r387919;
        double r387921 = 3.0;
        double r387922 = r387921 + r387910;
        double r387923 = r387913 * r387922;
        double r387924 = r387920 + r387923;
        double r387925 = r387917 * r387924;
        double r387926 = r387916 + r387925;
        double r387927 = r387926 - r387918;
        return r387927;
}

double f(double a, double b) {
        double r387928 = a;
        double r387929 = r387928 * r387928;
        double r387930 = b;
        double r387931 = r387930 * r387930;
        double r387932 = r387929 + r387931;
        double r387933 = 2.0;
        double r387934 = pow(r387932, r387933);
        double r387935 = 4.0;
        double r387936 = 1.0;
        double r387937 = r387936 - r387928;
        double r387938 = r387929 * r387937;
        double r387939 = 3.0;
        double r387940 = 3.0;
        double r387941 = pow(r387939, r387940);
        double r387942 = pow(r387928, r387940);
        double r387943 = r387941 + r387942;
        double r387944 = r387931 * r387943;
        double r387945 = r387939 * r387939;
        double r387946 = r387939 * r387928;
        double r387947 = r387929 - r387946;
        double r387948 = r387945 + r387947;
        double r387949 = r387944 / r387948;
        double r387950 = r387938 + r387949;
        double r387951 = r387935 * r387950;
        double r387952 = r387934 + r387951;
        double r387953 = r387952 - r387936;
        return r387953;
}

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. Using strategy rm
  3. Applied flip3-+0.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 \color{blue}{\frac{{3}^{3} + {a}^{3}}{3 \cdot 3 + \left(a \cdot a - 3 \cdot a\right)}}\right)\right) - 1\]
  4. Applied associate-*r/0.4

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

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

Reproduce

herbie shell --seed 2019350 
(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))