Average Error: 0.2 → 0.7
Time: 7.7s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\mathsf{fma}\left(4 \cdot b, b, {\left(\sqrt[3]{a \cdot a + b \cdot b} \cdot \sqrt[3]{a \cdot a + b \cdot b}\right)}^{2} \cdot {\left(\sqrt[3]{a \cdot a + b \cdot b}\right)}^{2}\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\mathsf{fma}\left(4 \cdot b, b, {\left(\sqrt[3]{a \cdot a + b \cdot b} \cdot \sqrt[3]{a \cdot a + b \cdot b}\right)}^{2} \cdot {\left(\sqrt[3]{a \cdot a + b \cdot b}\right)}^{2}\right) - 1
double f(double a, double b) {
        double r525 = a;
        double r526 = r525 * r525;
        double r527 = b;
        double r528 = r527 * r527;
        double r529 = r526 + r528;
        double r530 = 2.0;
        double r531 = pow(r529, r530);
        double r532 = 4.0;
        double r533 = r532 * r528;
        double r534 = r531 + r533;
        double r535 = 1.0;
        double r536 = r534 - r535;
        return r536;
}

double f(double a, double b) {
        double r537 = 4.0;
        double r538 = b;
        double r539 = r537 * r538;
        double r540 = a;
        double r541 = r540 * r540;
        double r542 = r538 * r538;
        double r543 = r541 + r542;
        double r544 = cbrt(r543);
        double r545 = r544 * r544;
        double r546 = 2.0;
        double r547 = pow(r545, r546);
        double r548 = pow(r544, r546);
        double r549 = r547 * r548;
        double r550 = fma(r539, r538, r549);
        double r551 = 1.0;
        double r552 = r550 - r551;
        return r552;
}

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 *-un-lft-identity0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - \color{blue}{1 \cdot 1}\]
  4. Applied *-un-lft-identity0.2

    \[\leadsto \color{blue}{1 \cdot \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right)} - 1 \cdot 1\]
  5. Applied distribute-lft-out--0.2

    \[\leadsto \color{blue}{1 \cdot \left(\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\right)}\]
  6. Simplified0.2

    \[\leadsto 1 \cdot \color{blue}{\left(\mathsf{fma}\left(4 \cdot b, b, {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1\right)}\]
  7. Using strategy rm
  8. Applied add-cube-cbrt0.7

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

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

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

Reproduce

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