Average Error: 0.2 → 0.2
Time: 6.9s
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(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(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(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r319856 = a;
        double r319857 = r319856 * r319856;
        double r319858 = b;
        double r319859 = r319858 * r319858;
        double r319860 = r319857 + r319859;
        double r319861 = 2.0;
        double r319862 = pow(r319860, r319861);
        double r319863 = 4.0;
        double r319864 = 1.0;
        double r319865 = r319864 + r319856;
        double r319866 = r319857 * r319865;
        double r319867 = 3.0;
        double r319868 = r319867 * r319856;
        double r319869 = r319864 - r319868;
        double r319870 = r319859 * r319869;
        double r319871 = r319866 + r319870;
        double r319872 = r319863 * r319871;
        double r319873 = r319862 + r319872;
        double r319874 = r319873 - r319864;
        return r319874;
}

double f(double a, double b) {
        double r319875 = a;
        double r319876 = r319875 * r319875;
        double r319877 = b;
        double r319878 = r319877 * r319877;
        double r319879 = r319876 + r319878;
        double r319880 = 2.0;
        double r319881 = pow(r319879, r319880);
        double r319882 = 4.0;
        double r319883 = 1.0;
        double r319884 = r319883 + r319875;
        double r319885 = r319876 * r319884;
        double r319886 = 3.0;
        double r319887 = r319886 * r319875;
        double r319888 = r319883 - r319887;
        double r319889 = r319878 * r319888;
        double r319890 = r319885 + r319889;
        double r319891 = r319882 * r319890;
        double r319892 = r319881 + r319891;
        double r319893 = r319892 - r319883;
        return r319893;
}

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. 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(1 - 3 \cdot a\right)\right)\right) - 1\]

Reproduce

herbie shell --seed 2020018 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))