Average Error: 0.2 → 0.2
Time: 9.4s
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) + \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) + \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) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r181226 = a;
        double r181227 = r181226 * r181226;
        double r181228 = b;
        double r181229 = r181228 * r181228;
        double r181230 = r181227 + r181229;
        double r181231 = 2.0;
        double r181232 = pow(r181230, r181231);
        double r181233 = 4.0;
        double r181234 = 1.0;
        double r181235 = r181234 - r181226;
        double r181236 = r181227 * r181235;
        double r181237 = 3.0;
        double r181238 = r181237 + r181226;
        double r181239 = r181229 * r181238;
        double r181240 = r181236 + r181239;
        double r181241 = r181233 * r181240;
        double r181242 = r181232 + r181241;
        double r181243 = r181242 - r181234;
        return r181243;
}

double f(double a, double b) {
        double r181244 = a;
        double r181245 = r181244 * r181244;
        double r181246 = b;
        double r181247 = r181246 * r181246;
        double r181248 = r181245 + r181247;
        double r181249 = 2.0;
        double r181250 = pow(r181248, r181249);
        double r181251 = 4.0;
        double r181252 = 1.0;
        double r181253 = r181252 - r181244;
        double r181254 = r181245 * r181253;
        double r181255 = 3.0;
        double r181256 = r181255 + r181244;
        double r181257 = r181247 * r181256;
        double r181258 = r181254 + r181257;
        double r181259 = r181251 * r181258;
        double r181260 = r181250 + r181259;
        double r181261 = r181260 - r181252;
        return r181261;
}

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

Reproduce

herbie shell --seed 2019308 
(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))