Average Error: 0.2 → 0.2
Time: 10.2s
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\]
\[\sqrt{{\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)} \cdot \sqrt{{\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)} - 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
\sqrt{{\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)} \cdot \sqrt{{\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)} - 1
double f(double a, double b) {
        double r247895 = a;
        double r247896 = r247895 * r247895;
        double r247897 = b;
        double r247898 = r247897 * r247897;
        double r247899 = r247896 + r247898;
        double r247900 = 2.0;
        double r247901 = pow(r247899, r247900);
        double r247902 = 4.0;
        double r247903 = 1.0;
        double r247904 = r247903 - r247895;
        double r247905 = r247896 * r247904;
        double r247906 = 3.0;
        double r247907 = r247906 + r247895;
        double r247908 = r247898 * r247907;
        double r247909 = r247905 + r247908;
        double r247910 = r247902 * r247909;
        double r247911 = r247901 + r247910;
        double r247912 = r247911 - r247903;
        return r247912;
}

double f(double a, double b) {
        double r247913 = a;
        double r247914 = r247913 * r247913;
        double r247915 = b;
        double r247916 = r247915 * r247915;
        double r247917 = r247914 + r247916;
        double r247918 = 2.0;
        double r247919 = pow(r247917, r247918);
        double r247920 = 4.0;
        double r247921 = 1.0;
        double r247922 = r247921 - r247913;
        double r247923 = r247914 * r247922;
        double r247924 = 3.0;
        double r247925 = r247924 + r247913;
        double r247926 = r247916 * r247925;
        double r247927 = r247923 + r247926;
        double r247928 = r247920 * r247927;
        double r247929 = r247919 + r247928;
        double r247930 = sqrt(r247929);
        double r247931 = r247930 * r247930;
        double r247932 = r247931 - r247921;
        return r247932;
}

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 add-sqr-sqrt0.2

    \[\leadsto \color{blue}{\sqrt{{\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)} \cdot \sqrt{{\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)}} - 1\]
  4. Final simplification0.2

    \[\leadsto \sqrt{{\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)} \cdot \sqrt{{\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)} - 1\]

Reproduce

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