Average Error: 0.2 → 0.2
Time: 30.6s
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(4, \left(\mathsf{fma}\left(a, \left(\left(1 - a\right) \cdot a\right), \left(\sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)} \cdot \left(\sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)} \cdot \sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)}\right)\right)\right)\right), \left(\mathsf{fma}\left(\left(\mathsf{fma}\left(b, b, \left(a \cdot a\right)\right)\right), \left(\mathsf{fma}\left(b, b, \left(a \cdot a\right)\right)\right), -1\right)\right)\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
\mathsf{fma}\left(4, \left(\mathsf{fma}\left(a, \left(\left(1 - a\right) \cdot a\right), \left(\sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)} \cdot \left(\sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)} \cdot \sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)}\right)\right)\right)\right), \left(\mathsf{fma}\left(\left(\mathsf{fma}\left(b, b, \left(a \cdot a\right)\right)\right), \left(\mathsf{fma}\left(b, b, \left(a \cdot a\right)\right)\right), -1\right)\right)\right)
double f(double a, double b) {
        double r55662391 = a;
        double r55662392 = r55662391 * r55662391;
        double r55662393 = b;
        double r55662394 = r55662393 * r55662393;
        double r55662395 = r55662392 + r55662394;
        double r55662396 = 2.0;
        double r55662397 = pow(r55662395, r55662396);
        double r55662398 = 4.0;
        double r55662399 = 1.0;
        double r55662400 = r55662399 - r55662391;
        double r55662401 = r55662392 * r55662400;
        double r55662402 = 3.0;
        double r55662403 = r55662402 + r55662391;
        double r55662404 = r55662394 * r55662403;
        double r55662405 = r55662401 + r55662404;
        double r55662406 = r55662398 * r55662405;
        double r55662407 = r55662397 + r55662406;
        double r55662408 = r55662407 - r55662399;
        return r55662408;
}

double f(double a, double b) {
        double r55662409 = 4.0;
        double r55662410 = a;
        double r55662411 = 1.0;
        double r55662412 = r55662411 - r55662410;
        double r55662413 = r55662412 * r55662410;
        double r55662414 = 3.0;
        double r55662415 = r55662410 + r55662414;
        double r55662416 = b;
        double r55662417 = r55662416 * r55662416;
        double r55662418 = r55662415 * r55662417;
        double r55662419 = cbrt(r55662418);
        double r55662420 = r55662419 * r55662419;
        double r55662421 = r55662419 * r55662420;
        double r55662422 = fma(r55662410, r55662413, r55662421);
        double r55662423 = r55662410 * r55662410;
        double r55662424 = fma(r55662416, r55662416, r55662423);
        double r55662425 = -1.0;
        double r55662426 = fma(r55662424, r55662424, r55662425);
        double r55662427 = fma(r55662409, r55662422, r55662426);
        return r55662427;
}

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. Simplified0.2

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

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

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

Reproduce

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