Average Error: 0.2 → 0.2
Time: 6.5s
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 r229912 = a;
        double r229913 = r229912 * r229912;
        double r229914 = b;
        double r229915 = r229914 * r229914;
        double r229916 = r229913 + r229915;
        double r229917 = 2.0;
        double r229918 = pow(r229916, r229917);
        double r229919 = 4.0;
        double r229920 = 1.0;
        double r229921 = r229920 + r229912;
        double r229922 = r229913 * r229921;
        double r229923 = 3.0;
        double r229924 = r229923 * r229912;
        double r229925 = r229920 - r229924;
        double r229926 = r229915 * r229925;
        double r229927 = r229922 + r229926;
        double r229928 = r229919 * r229927;
        double r229929 = r229918 + r229928;
        double r229930 = r229929 - r229920;
        return r229930;
}

double f(double a, double b) {
        double r229931 = a;
        double r229932 = r229931 * r229931;
        double r229933 = b;
        double r229934 = r229933 * r229933;
        double r229935 = r229932 + r229934;
        double r229936 = 2.0;
        double r229937 = pow(r229935, r229936);
        double r229938 = 4.0;
        double r229939 = 1.0;
        double r229940 = r229939 + r229931;
        double r229941 = r229932 * r229940;
        double r229942 = 3.0;
        double r229943 = r229942 * r229931;
        double r229944 = r229939 - r229943;
        double r229945 = r229934 * r229944;
        double r229946 = r229941 + r229945;
        double r229947 = r229938 * r229946;
        double r229948 = r229937 + r229947;
        double r229949 = r229948 - r229939;
        return r229949;
}

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 2019353 
(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))