Average Error: 0.2 → 0.2
Time: 19.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(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 r133068 = a;
        double r133069 = r133068 * r133068;
        double r133070 = b;
        double r133071 = r133070 * r133070;
        double r133072 = r133069 + r133071;
        double r133073 = 2.0;
        double r133074 = pow(r133072, r133073);
        double r133075 = 4.0;
        double r133076 = 1.0;
        double r133077 = r133076 + r133068;
        double r133078 = r133069 * r133077;
        double r133079 = 3.0;
        double r133080 = r133079 * r133068;
        double r133081 = r133076 - r133080;
        double r133082 = r133071 * r133081;
        double r133083 = r133078 + r133082;
        double r133084 = r133075 * r133083;
        double r133085 = r133074 + r133084;
        double r133086 = r133085 - r133076;
        return r133086;
}

double f(double a, double b) {
        double r133087 = a;
        double r133088 = r133087 * r133087;
        double r133089 = b;
        double r133090 = r133089 * r133089;
        double r133091 = r133088 + r133090;
        double r133092 = 2.0;
        double r133093 = pow(r133091, r133092);
        double r133094 = 4.0;
        double r133095 = 1.0;
        double r133096 = r133095 + r133087;
        double r133097 = r133088 * r133096;
        double r133098 = 3.0;
        double r133099 = r133098 * r133087;
        double r133100 = r133095 - r133099;
        double r133101 = r133090 * r133100;
        double r133102 = r133097 + r133101;
        double r133103 = r133094 * r133102;
        double r133104 = r133093 + r133103;
        double r133105 = r133104 - r133095;
        return r133105;
}

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