Average Error: 0.2 → 0.2
Time: 6.0s
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\]
\[\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\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\]
\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
\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\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
double f(double a, double b) {
        double r235385 = a;
        double r235386 = r235385 * r235385;
        double r235387 = b;
        double r235388 = r235387 * r235387;
        double r235389 = r235386 + r235388;
        double r235390 = 2.0;
        double r235391 = pow(r235389, r235390);
        double r235392 = 4.0;
        double r235393 = 1.0;
        double r235394 = r235393 - r235385;
        double r235395 = r235386 * r235394;
        double r235396 = 3.0;
        double r235397 = r235396 + r235385;
        double r235398 = r235388 * r235397;
        double r235399 = r235395 + r235398;
        double r235400 = r235392 * r235399;
        double r235401 = r235391 + r235400;
        double r235402 = r235401 - r235393;
        return r235402;
}

double f(double a, double b) {
        double r235403 = a;
        double r235404 = r235403 * r235403;
        double r235405 = b;
        double r235406 = r235405 * r235405;
        double r235407 = r235404 + r235406;
        double r235408 = 2.0;
        double r235409 = 2.0;
        double r235410 = r235408 / r235409;
        double r235411 = pow(r235407, r235410);
        double r235412 = 4.0;
        double r235413 = 1.0;
        double r235414 = r235413 - r235403;
        double r235415 = r235404 * r235414;
        double r235416 = 3.0;
        double r235417 = r235416 + r235403;
        double r235418 = r235406 * r235417;
        double r235419 = r235415 + r235418;
        double r235420 = r235412 * r235419;
        double r235421 = fma(r235411, r235411, r235420);
        double r235422 = r235421 - r235413;
        return r235422;
}

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. Using strategy rm
  3. Applied sqr-pow0.2

    \[\leadsto \left(\color{blue}{{\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)} \cdot {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\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. Applied fma-def0.2

    \[\leadsto \color{blue}{\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\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\]
  5. Final simplification0.2

    \[\leadsto \mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\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\]

Reproduce

herbie shell --seed 2020001 +o rules:numerics
(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))