Average Error: 0.2 → 0.2
Time: 19.6s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\mathsf{fma}\left(4 \cdot b, b, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\mathsf{fma}\left(4 \cdot b, b, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1
double f(double a, double b) {
        double r236231 = a;
        double r236232 = r236231 * r236231;
        double r236233 = b;
        double r236234 = r236233 * r236233;
        double r236235 = r236232 + r236234;
        double r236236 = 2.0;
        double r236237 = pow(r236235, r236236);
        double r236238 = 4.0;
        double r236239 = r236238 * r236234;
        double r236240 = r236237 + r236239;
        double r236241 = 1.0;
        double r236242 = r236240 - r236241;
        return r236242;
}

double f(double a, double b) {
        double r236243 = 4.0;
        double r236244 = b;
        double r236245 = r236243 * r236244;
        double r236246 = a;
        double r236247 = r236244 * r236244;
        double r236248 = fma(r236246, r236246, r236247);
        double r236249 = 2.0;
        double r236250 = pow(r236248, r236249);
        double r236251 = fma(r236245, r236244, r236250);
        double r236252 = 1.0;
        double r236253 = r236251 - r236252;
        return r236253;
}

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(b \cdot b\right)\right) - 1\]
  2. Simplified0.2

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

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

Reproduce

herbie shell --seed 2019195 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (* b b))) 1.0))