Average Error: 0.2 → 0.2
Time: 18.8s
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 r305212 = a;
        double r305213 = r305212 * r305212;
        double r305214 = b;
        double r305215 = r305214 * r305214;
        double r305216 = r305213 + r305215;
        double r305217 = 2.0;
        double r305218 = pow(r305216, r305217);
        double r305219 = 4.0;
        double r305220 = 1.0;
        double r305221 = r305220 - r305212;
        double r305222 = r305213 * r305221;
        double r305223 = 3.0;
        double r305224 = r305223 + r305212;
        double r305225 = r305215 * r305224;
        double r305226 = r305222 + r305225;
        double r305227 = r305219 * r305226;
        double r305228 = r305218 + r305227;
        double r305229 = r305228 - r305220;
        return r305229;
}

double f(double a, double b) {
        double r305230 = a;
        double r305231 = r305230 * r305230;
        double r305232 = b;
        double r305233 = r305232 * r305232;
        double r305234 = r305231 + r305233;
        double r305235 = 2.0;
        double r305236 = pow(r305234, r305235);
        double r305237 = 4.0;
        double r305238 = 1.0;
        double r305239 = r305238 - r305230;
        double r305240 = r305231 * r305239;
        double r305241 = 3.0;
        double r305242 = r305241 + r305230;
        double r305243 = r305233 * r305242;
        double r305244 = r305240 + r305243;
        double r305245 = r305237 * r305244;
        double r305246 = r305236 + r305245;
        double r305247 = r305246 - r305238;
        return r305247;
}

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