Average Error: 0.2 → 0.1
Time: 51.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((b \cdot \left((b \cdot b + \left(\left(a \cdot a\right) \cdot 2\right))_* \cdot b\right) + \left({a}^{4}\right))_* + \left(\left(b \cdot b\right) \cdot \left(3 + a\right) + \left(a \cdot a\right) \cdot \left(1 - 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(3 + a\right)\right)\right) - 1
\left((b \cdot \left((b \cdot b + \left(\left(a \cdot a\right) \cdot 2\right))_* \cdot b\right) + \left({a}^{4}\right))_* + \left(\left(b \cdot b\right) \cdot \left(3 + a\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r41739329 = a;
        double r41739330 = r41739329 * r41739329;
        double r41739331 = b;
        double r41739332 = r41739331 * r41739331;
        double r41739333 = r41739330 + r41739332;
        double r41739334 = 2.0;
        double r41739335 = pow(r41739333, r41739334);
        double r41739336 = 4.0;
        double r41739337 = 1.0;
        double r41739338 = r41739337 - r41739329;
        double r41739339 = r41739330 * r41739338;
        double r41739340 = 3.0;
        double r41739341 = r41739340 + r41739329;
        double r41739342 = r41739332 * r41739341;
        double r41739343 = r41739339 + r41739342;
        double r41739344 = r41739336 * r41739343;
        double r41739345 = r41739335 + r41739344;
        double r41739346 = r41739345 - r41739337;
        return r41739346;
}

double f(double a, double b) {
        double r41739347 = b;
        double r41739348 = a;
        double r41739349 = r41739348 * r41739348;
        double r41739350 = 2.0;
        double r41739351 = r41739349 * r41739350;
        double r41739352 = fma(r41739347, r41739347, r41739351);
        double r41739353 = r41739352 * r41739347;
        double r41739354 = 4.0;
        double r41739355 = pow(r41739348, r41739354);
        double r41739356 = fma(r41739347, r41739353, r41739355);
        double r41739357 = r41739347 * r41739347;
        double r41739358 = 3.0;
        double r41739359 = r41739358 + r41739348;
        double r41739360 = r41739357 * r41739359;
        double r41739361 = 1.0;
        double r41739362 = r41739361 - r41739348;
        double r41739363 = r41739349 * r41739362;
        double r41739364 = r41739360 + r41739363;
        double r41739365 = r41739364 * r41739354;
        double r41739366 = r41739356 + r41739365;
        double r41739367 = r41739366 - r41739361;
        return r41739367;
}

Error

Bits error versus a

Bits error versus b

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. Taylor expanded around 0 0.0

    \[\leadsto \left(\color{blue}{\left({b}^{4} + \left(2 \cdot \left({a}^{2} \cdot {b}^{2}\right) + {a}^{4}\right)\right)} + 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\]
  3. Simplified0.2

    \[\leadsto \left(\color{blue}{(b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left(\left(a \cdot a\right) \cdot \left(a \cdot a\right)\right))_*} + 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\]
  4. Using strategy rm
  5. Applied pow10.2

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left(\left(a \cdot a\right) \cdot \left(a \cdot \color{blue}{{a}^{1}}\right)\right))_* + 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\]
  6. Applied pow10.2

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left(\left(a \cdot a\right) \cdot \left(\color{blue}{{a}^{1}} \cdot {a}^{1}\right)\right))_* + 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\]
  7. Applied pow-prod-up0.2

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left(\left(a \cdot a\right) \cdot \color{blue}{{a}^{\left(1 + 1\right)}}\right))_* + 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\]
  8. Applied pow10.2

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left(\left(a \cdot \color{blue}{{a}^{1}}\right) \cdot {a}^{\left(1 + 1\right)}\right))_* + 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\]
  9. Applied pow10.2

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left(\left(\color{blue}{{a}^{1}} \cdot {a}^{1}\right) \cdot {a}^{\left(1 + 1\right)}\right))_* + 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\]
  10. Applied pow-prod-up0.2

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left(\color{blue}{{a}^{\left(1 + 1\right)}} \cdot {a}^{\left(1 + 1\right)}\right))_* + 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\]
  11. Applied pow-prod-up0.1

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \color{blue}{\left({a}^{\left(\left(1 + 1\right) + \left(1 + 1\right)\right)}\right)})_* + 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\]
  12. Simplified0.1

    \[\leadsto \left((b \cdot \left(b \cdot (b \cdot b + \left(2 \cdot \left(a \cdot a\right)\right))_*\right) + \left({a}^{\color{blue}{4}}\right))_* + 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\]
  13. Final simplification0.1

    \[\leadsto \left((b \cdot \left((b \cdot b + \left(\left(a \cdot a\right) \cdot 2\right))_* \cdot b\right) + \left({a}^{4}\right))_* + \left(\left(b \cdot b\right) \cdot \left(3 + a\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\right) - 1\]

Reproduce

herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))