Average Error: 0.2 → 0.2
Time: 6.1s
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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\mathsf{fma}\left(4, \left(\left(\left(\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}}\right) \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}}\right) \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)\right) - 1
\mathsf{fma}\left(4, \left(\left(\left(\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}}\right) \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}}\right) \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)}, {\left(a \cdot a + b \cdot b\right)}^{2} - 1\right)
double f(double a, double b) {
        double r270180 = a;
        double r270181 = r270180 * r270180;
        double r270182 = b;
        double r270183 = r270182 * r270182;
        double r270184 = r270181 + r270183;
        double r270185 = 2.0;
        double r270186 = pow(r270184, r270185);
        double r270187 = 4.0;
        double r270188 = 1.0;
        double r270189 = r270188 + r270180;
        double r270190 = r270181 * r270189;
        double r270191 = 3.0;
        double r270192 = r270191 * r270180;
        double r270193 = r270188 - r270192;
        double r270194 = r270183 * r270193;
        double r270195 = r270190 + r270194;
        double r270196 = r270187 * r270195;
        double r270197 = r270186 + r270196;
        double r270198 = r270197 - r270188;
        return r270198;
}

double f(double a, double b) {
        double r270199 = 4.0;
        double r270200 = a;
        double r270201 = r270200 * r270200;
        double r270202 = 1.0;
        double r270203 = r270202 + r270200;
        double r270204 = b;
        double r270205 = r270204 * r270204;
        double r270206 = 3.0;
        double r270207 = r270206 * r270200;
        double r270208 = r270202 - r270207;
        double r270209 = r270205 * r270208;
        double r270210 = fma(r270201, r270203, r270209);
        double r270211 = cbrt(r270210);
        double r270212 = cbrt(r270211);
        double r270213 = r270212 * r270212;
        double r270214 = r270213 * r270212;
        double r270215 = r270214 * r270211;
        double r270216 = r270215 * r270211;
        double r270217 = r270201 + r270205;
        double r270218 = 2.0;
        double r270219 = pow(r270217, r270218);
        double r270220 = r270219 - r270202;
        double r270221 = fma(r270199, r270216, r270220);
        return r270221;
}

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

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

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

Reproduce

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