Average Error: 0.2 → 0.5
Time: 18.4s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\mathsf{fma}\left(\left(\sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}} \cdot \sqrt[3]{a \cdot a + b \cdot b}\right) \cdot \sqrt[3]{a \cdot a + b \cdot b}, \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}, \left(b \cdot b\right) \cdot 4\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\mathsf{fma}\left(\left(\sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}} \cdot \sqrt[3]{a \cdot a + b \cdot b}\right) \cdot \sqrt[3]{a \cdot a + b \cdot b}, \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}, \left(b \cdot b\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r4983373 = a;
        double r4983374 = r4983373 * r4983373;
        double r4983375 = b;
        double r4983376 = r4983375 * r4983375;
        double r4983377 = r4983374 + r4983376;
        double r4983378 = 2.0;
        double r4983379 = pow(r4983377, r4983378);
        double r4983380 = 4.0;
        double r4983381 = r4983380 * r4983376;
        double r4983382 = r4983379 + r4983381;
        double r4983383 = 1.0;
        double r4983384 = r4983382 - r4983383;
        return r4983384;
}

double f(double a, double b) {
        double r4983385 = a;
        double r4983386 = r4983385 * r4983385;
        double r4983387 = b;
        double r4983388 = r4983387 * r4983387;
        double r4983389 = r4983386 + r4983388;
        double r4983390 = 2.0;
        double r4983391 = pow(r4983389, r4983390);
        double r4983392 = cbrt(r4983391);
        double r4983393 = cbrt(r4983389);
        double r4983394 = r4983392 * r4983393;
        double r4983395 = r4983394 * r4983393;
        double r4983396 = 4.0;
        double r4983397 = r4983388 * r4983396;
        double r4983398 = fma(r4983395, r4983392, r4983397);
        double r4983399 = 1.0;
        double r4983400 = r4983398 - r4983399;
        return r4983400;
}

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(b \cdot b\right)\right) - 1\]
  2. Using strategy rm
  3. Applied add-cube-cbrt0.5

    \[\leadsto \left(\color{blue}{\left(\sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}} \cdot \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}\right) \cdot \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
  4. Applied fma-def0.5

    \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}} \cdot \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}, 4 \cdot \left(b \cdot b\right)\right)} - 1\]
  5. Using strategy rm
  6. Applied unpow20.5

    \[\leadsto \mathsf{fma}\left(\sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}} \cdot \sqrt[3]{\color{blue}{\left(a \cdot a + b \cdot b\right) \cdot \left(a \cdot a + b \cdot b\right)}}, \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}, 4 \cdot \left(b \cdot b\right)\right) - 1\]
  7. Applied cbrt-prod0.5

    \[\leadsto \mathsf{fma}\left(\sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}} \cdot \color{blue}{\left(\sqrt[3]{a \cdot a + b \cdot b} \cdot \sqrt[3]{a \cdot a + b \cdot b}\right)}, \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}, 4 \cdot \left(b \cdot b\right)\right) - 1\]
  8. Applied associate-*r*0.5

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

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

Reproduce

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