Average Error: 0.2 → 0.2
Time: 23.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(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\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(\sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\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 r9232050 = a;
        double r9232051 = r9232050 * r9232050;
        double r9232052 = b;
        double r9232053 = r9232052 * r9232052;
        double r9232054 = r9232051 + r9232053;
        double r9232055 = 2.0;
        double r9232056 = pow(r9232054, r9232055);
        double r9232057 = 4.0;
        double r9232058 = 1.0;
        double r9232059 = r9232058 - r9232050;
        double r9232060 = r9232051 * r9232059;
        double r9232061 = 3.0;
        double r9232062 = r9232061 + r9232050;
        double r9232063 = r9232053 * r9232062;
        double r9232064 = r9232060 + r9232063;
        double r9232065 = r9232057 * r9232064;
        double r9232066 = r9232056 + r9232065;
        double r9232067 = r9232066 - r9232058;
        return r9232067;
}

double f(double a, double b) {
        double r9232068 = 4.0;
        double r9232069 = b;
        double r9232070 = r9232069 * r9232069;
        double r9232071 = a;
        double r9232072 = 3.0;
        double r9232073 = r9232071 + r9232072;
        double r9232074 = r9232071 * r9232071;
        double r9232075 = r9232071 - r9232074;
        double r9232076 = r9232071 * r9232075;
        double r9232077 = fma(r9232070, r9232073, r9232076);
        double r9232078 = cbrt(r9232077);
        double r9232079 = r9232078 * r9232078;
        double r9232080 = r9232078 * r9232079;
        double r9232081 = fma(r9232069, r9232069, r9232074);
        double r9232082 = -1.0;
        double r9232083 = fma(r9232081, r9232081, r9232082);
        double r9232084 = fma(r9232068, r9232080, r9232083);
        return r9232084;
}

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(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\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, \color{blue}{\left(\left(\sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\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(\sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\right)\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\left(b \cdot b\right), \left(a + 3\right), \left(a \cdot \left(a - a \cdot a\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 2019133 +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))