Average Error: 0.2 → 0.4
Time: 14.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(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 r212886 = a;
        double r212887 = r212886 * r212886;
        double r212888 = b;
        double r212889 = r212888 * r212888;
        double r212890 = r212887 + r212889;
        double r212891 = 2.0;
        double r212892 = pow(r212890, r212891);
        double r212893 = 4.0;
        double r212894 = 1.0;
        double r212895 = r212894 - r212886;
        double r212896 = r212887 * r212895;
        double r212897 = 3.0;
        double r212898 = r212897 + r212886;
        double r212899 = r212889 * r212898;
        double r212900 = r212896 + r212899;
        double r212901 = r212893 * r212900;
        double r212902 = r212892 + r212901;
        double r212903 = r212902 - r212894;
        return r212903;
}

double f(double a, double b) {
        double r212904 = a;
        double r212905 = r212904 * r212904;
        double r212906 = b;
        double r212907 = r212906 * r212906;
        double r212908 = r212905 + r212907;
        double r212909 = 2.0;
        double r212910 = pow(r212908, r212909);
        double r212911 = 4.0;
        double r212912 = 1.0;
        double r212913 = r212912 - r212904;
        double r212914 = r212905 * r212913;
        double r212915 = 3.0;
        double r212916 = 3.0;
        double r212917 = pow(r212915, r212916);
        double r212918 = pow(r212904, r212916);
        double r212919 = r212917 + r212918;
        double r212920 = r212907 * r212919;
        double r212921 = r212915 * r212915;
        double r212922 = r212915 * r212904;
        double r212923 = r212905 - r212922;
        double r212924 = r212921 + r212923;
        double r212925 = r212920 / r212924;
        double r212926 = r212914 + r212925;
        double r212927 = r212911 * r212926;
        double r212928 = r212910 + r212927;
        double r212929 = r212928 - r212912;
        return r212929;
}

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 +o rules:numerics
(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))