Average Error: 0.2 → 0.2
Time: 5.7s
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(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{\left(2 \cdot \frac{2}{2}\right)} + \mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), -1\right)\]
\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(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{\left(2 \cdot \frac{2}{2}\right)} + \mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), -1\right)
double f(double a, double b) {
        double r365403 = a;
        double r365404 = r365403 * r365403;
        double r365405 = b;
        double r365406 = r365405 * r365405;
        double r365407 = r365404 + r365406;
        double r365408 = 2.0;
        double r365409 = pow(r365407, r365408);
        double r365410 = 4.0;
        double r365411 = 1.0;
        double r365412 = r365411 - r365403;
        double r365413 = r365404 * r365412;
        double r365414 = 3.0;
        double r365415 = r365414 + r365403;
        double r365416 = r365406 * r365415;
        double r365417 = r365413 + r365416;
        double r365418 = r365410 * r365417;
        double r365419 = r365409 + r365418;
        double r365420 = r365419 - r365411;
        return r365420;
}

double f(double a, double b) {
        double r365421 = a;
        double r365422 = b;
        double r365423 = r365422 * r365422;
        double r365424 = fma(r365421, r365421, r365423);
        double r365425 = 2.0;
        double r365426 = 2.0;
        double r365427 = r365426 / r365425;
        double r365428 = r365425 * r365427;
        double r365429 = pow(r365424, r365428);
        double r365430 = 4.0;
        double r365431 = r365421 * r365421;
        double r365432 = 1.0;
        double r365433 = r365432 - r365421;
        double r365434 = 3.0;
        double r365435 = r365434 + r365421;
        double r365436 = r365423 * r365435;
        double r365437 = fma(r365431, r365433, r365436);
        double r365438 = -r365432;
        double r365439 = fma(r365430, r365437, r365438);
        double r365440 = r365429 + r365439;
        return r365440;
}

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. Using strategy rm
  6. Applied *-un-lft-identity0.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) - \color{blue}{1 \cdot 1}\]
  7. Applied *-un-lft-identity0.2

    \[\leadsto \color{blue}{1 \cdot \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 \cdot 1\]
  8. Applied distribute-lft-out--0.2

    \[\leadsto \color{blue}{1 \cdot \left(\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\right)}\]
  9. Simplified0.2

    \[\leadsto 1 \cdot \color{blue}{\left({\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{\left(2 \cdot \frac{2}{2}\right)} + \mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), -1\right)\right)}\]
  10. Final simplification0.2

    \[\leadsto {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{\left(2 \cdot \frac{2}{2}\right)} + \mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), -1\right)\]

Reproduce

herbie shell --seed 2019346 +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))