Average Error: 0.2 → 0.2
Time: 23.6s
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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r205928 = a;
        double r205929 = r205928 * r205928;
        double r205930 = b;
        double r205931 = r205930 * r205930;
        double r205932 = r205929 + r205931;
        double r205933 = 2.0;
        double r205934 = pow(r205932, r205933);
        double r205935 = 4.0;
        double r205936 = 1.0;
        double r205937 = r205936 + r205928;
        double r205938 = r205929 * r205937;
        double r205939 = 3.0;
        double r205940 = r205939 * r205928;
        double r205941 = r205936 - r205940;
        double r205942 = r205931 * r205941;
        double r205943 = r205938 + r205942;
        double r205944 = r205935 * r205943;
        double r205945 = r205934 + r205944;
        double r205946 = r205945 - r205936;
        return r205946;
}

double f(double a, double b) {
        double r205947 = a;
        double r205948 = r205947 * r205947;
        double r205949 = b;
        double r205950 = r205949 * r205949;
        double r205951 = r205948 + r205950;
        double r205952 = 2.0;
        double r205953 = pow(r205951, r205952);
        double r205954 = 1.0;
        double r205955 = r205947 + r205954;
        double r205956 = r205948 * r205955;
        double r205957 = 3.0;
        double r205958 = r205957 * r205947;
        double r205959 = r205954 - r205958;
        double r205960 = r205950 * r205959;
        double r205961 = r205956 + r205960;
        double r205962 = 4.0;
        double r205963 = r205961 * r205962;
        double r205964 = r205953 + r205963;
        double r205965 = r205964 - r205954;
        return r205965;
}

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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1\]

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))