Average Error: 0.2 → 0.5
Time: 4.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[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(\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[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(\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 r328361 = a;
        double r328362 = r328361 * r328361;
        double r328363 = b;
        double r328364 = r328363 * r328363;
        double r328365 = r328362 + r328364;
        double r328366 = 2.0;
        double r328367 = pow(r328365, r328366);
        double r328368 = 4.0;
        double r328369 = 1.0;
        double r328370 = r328369 - r328361;
        double r328371 = r328362 * r328370;
        double r328372 = 3.0;
        double r328373 = r328372 + r328361;
        double r328374 = r328364 * r328373;
        double r328375 = r328371 + r328374;
        double r328376 = r328368 * r328375;
        double r328377 = r328367 + r328376;
        double r328378 = r328377 - r328369;
        return r328378;
}

double f(double a, double b) {
        double r328379 = a;
        double r328380 = r328379 * r328379;
        double r328381 = b;
        double r328382 = r328381 * r328381;
        double r328383 = r328380 + r328382;
        double r328384 = 2.0;
        double r328385 = pow(r328383, r328384);
        double r328386 = cbrt(r328385);
        double r328387 = r328386 * r328386;
        double r328388 = 4.0;
        double r328389 = 1.0;
        double r328390 = r328389 - r328379;
        double r328391 = r328380 * r328390;
        double r328392 = 3.0;
        double r328393 = r328392 + r328379;
        double r328394 = r328382 * r328393;
        double r328395 = r328391 + r328394;
        double r328396 = r328388 * r328395;
        double r328397 = fma(r328387, r328386, r328396);
        double r328398 = r328397 - r328389;
        return r328398;
}

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-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(\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.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(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right)} - 1\]
  5. Final simplification0.5

    \[\leadsto \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(\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 2020027 +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))