Average Error: 0.2 → 0.2
Time: 5.7s
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(\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)}, {\left(a \cdot a + b \cdot b\right)}^{2} - 1\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(\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)}, {\left(a \cdot a + b \cdot b\right)}^{2} - 1\right)
double f(double a, double b) {
        double r324276 = a;
        double r324277 = r324276 * r324276;
        double r324278 = b;
        double r324279 = r324278 * r324278;
        double r324280 = r324277 + r324279;
        double r324281 = 2.0;
        double r324282 = pow(r324280, r324281);
        double r324283 = 4.0;
        double r324284 = 1.0;
        double r324285 = r324284 - r324276;
        double r324286 = r324277 * r324285;
        double r324287 = 3.0;
        double r324288 = r324287 + r324276;
        double r324289 = r324279 * r324288;
        double r324290 = r324286 + r324289;
        double r324291 = r324283 * r324290;
        double r324292 = r324282 + r324291;
        double r324293 = r324292 - r324284;
        return r324293;
}

double f(double a, double b) {
        double r324294 = 4.0;
        double r324295 = a;
        double r324296 = r324295 * r324295;
        double r324297 = 1.0;
        double r324298 = r324297 - r324295;
        double r324299 = b;
        double r324300 = r324299 * r324299;
        double r324301 = 3.0;
        double r324302 = r324301 + r324295;
        double r324303 = r324300 * r324302;
        double r324304 = fma(r324296, r324298, r324303);
        double r324305 = cbrt(r324304);
        double r324306 = r324305 * r324305;
        double r324307 = r324306 * r324305;
        double r324308 = r324296 + r324300;
        double r324309 = 2.0;
        double r324310 = pow(r324308, r324309);
        double r324311 = r324310 - r324297;
        double r324312 = fma(r324294, r324307, r324311);
        return r324312;
}

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, \mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), {\left(a \cdot a + b \cdot b\right)}^{2} - 1\right)}\]
  3. Using strategy rm
  4. Applied add-cube-cbrt0.2

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

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

Reproduce

herbie shell --seed 2020036 +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))