Average Error: 0.2 → 0.2
Time: 5.9s
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(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \left|{\left(\sqrt{a \cdot a + b \cdot b}\right)}^{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(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \left|{\left(\sqrt{a \cdot a + b \cdot b}\right)}^{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 r489511 = a;
        double r489512 = r489511 * r489511;
        double r489513 = b;
        double r489514 = r489513 * r489513;
        double r489515 = r489512 + r489514;
        double r489516 = 2.0;
        double r489517 = pow(r489515, r489516);
        double r489518 = 4.0;
        double r489519 = 1.0;
        double r489520 = r489519 - r489511;
        double r489521 = r489512 * r489520;
        double r489522 = 3.0;
        double r489523 = r489522 + r489511;
        double r489524 = r489514 * r489523;
        double r489525 = r489521 + r489524;
        double r489526 = r489518 * r489525;
        double r489527 = r489517 + r489526;
        double r489528 = r489527 - r489519;
        return r489528;
}

double f(double a, double b) {
        double r489529 = a;
        double r489530 = r489529 * r489529;
        double r489531 = b;
        double r489532 = r489531 * r489531;
        double r489533 = r489530 + r489532;
        double r489534 = 2.0;
        double r489535 = pow(r489533, r489534);
        double r489536 = sqrt(r489535);
        double r489537 = sqrt(r489533);
        double r489538 = pow(r489537, r489534);
        double r489539 = fabs(r489538);
        double r489540 = 4.0;
        double r489541 = 1.0;
        double r489542 = r489541 - r489529;
        double r489543 = r489530 * r489542;
        double r489544 = 3.0;
        double r489545 = r489544 + r489529;
        double r489546 = r489532 * r489545;
        double r489547 = r489543 + r489546;
        double r489548 = r489540 * r489547;
        double r489549 = fma(r489536, r489539, r489548);
        double r489550 = r489549 - r489541;
        return r489550;
}

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 add-sqr-sqrt0.2

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

    \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt{{\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\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt0.2

    \[\leadsto \mathsf{fma}\left(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt{{\color{blue}{\left(\sqrt{a \cdot a + b \cdot b} \cdot \sqrt{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\]
  7. Applied unpow-prod-down0.2

    \[\leadsto \mathsf{fma}\left(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt{\color{blue}{{\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2} \cdot {\left(\sqrt{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\]
  8. Applied rem-sqrt-square0.2

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

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