Average Error: 0.2 → 0.2
Time: 39.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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[(\left((\left(b \cdot b\right) \cdot \left((-3 \cdot a + 1)_*\right) + \left((\left(a \cdot a\right) \cdot a + \left(a \cdot a\right))_*\right))_*\right) \cdot 4 + \left((\left((b \cdot b + \left(a \cdot a\right))_*\right) \cdot \left((b \cdot b + \left(a \cdot a\right))_*\right) + -1)_*\right))_*\]
double f(double a, double b) {
        double r10276030 = a;
        double r10276031 = r10276030 * r10276030;
        double r10276032 = b;
        double r10276033 = r10276032 * r10276032;
        double r10276034 = r10276031 + r10276033;
        double r10276035 = 2.0;
        double r10276036 = pow(r10276034, r10276035);
        double r10276037 = 4.0;
        double r10276038 = 1.0;
        double r10276039 = r10276038 + r10276030;
        double r10276040 = r10276031 * r10276039;
        double r10276041 = 3.0;
        double r10276042 = r10276041 * r10276030;
        double r10276043 = r10276038 - r10276042;
        double r10276044 = r10276033 * r10276043;
        double r10276045 = r10276040 + r10276044;
        double r10276046 = r10276037 * r10276045;
        double r10276047 = r10276036 + r10276046;
        double r10276048 = r10276047 - r10276038;
        return r10276048;
}

double f(double a, double b) {
        double r10276049 = b;
        double r10276050 = r10276049 * r10276049;
        double r10276051 = -3.0;
        double r10276052 = a;
        double r10276053 = 1.0;
        double r10276054 = fma(r10276051, r10276052, r10276053);
        double r10276055 = r10276052 * r10276052;
        double r10276056 = fma(r10276055, r10276052, r10276055);
        double r10276057 = fma(r10276050, r10276054, r10276056);
        double r10276058 = 4.0;
        double r10276059 = fma(r10276049, r10276049, r10276055);
        double r10276060 = -1.0;
        double r10276061 = fma(r10276059, r10276059, r10276060);
        double r10276062 = fma(r10276057, r10276058, r10276061);
        return r10276062;
}

\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
(\left((\left(b \cdot b\right) \cdot \left((-3 \cdot a + 1)_*\right) + \left((\left(a \cdot a\right) \cdot a + \left(a \cdot a\right))_*\right))_*\right) \cdot 4 + \left((\left((b \cdot b + \left(a \cdot a\right))_*\right) \cdot \left((b \cdot b + \left(a \cdot a\right))_*\right) + -1)_*\right))_*

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}{(\left((\left(b \cdot b\right) \cdot \left((-3 \cdot a + 1)_*\right) + \left((\left(a \cdot a\right) \cdot a + \left(a \cdot a\right))_*\right))_*\right) \cdot 4 + \left((\left((b \cdot b + \left(a \cdot a\right))_*\right) \cdot \left((b \cdot b + \left(a \cdot a\right))_*\right) + -1)_*\right))_*}\]
  3. Taylor expanded around 0 0.2

    \[\leadsto (\left((\left(b \cdot b\right) \cdot \left((-3 \cdot a + 1)_*\right) + \color{blue}{\left({a}^{2} + {a}^{3}\right)})_*\right) \cdot 4 + \left((\left((b \cdot b + \left(a \cdot a\right))_*\right) \cdot \left((b \cdot b + \left(a \cdot a\right))_*\right) + -1)_*\right))_*\]
  4. Simplified0.2

    \[\leadsto (\left((\left(b \cdot b\right) \cdot \left((-3 \cdot a + 1)_*\right) + \color{blue}{\left((\left(a \cdot a\right) \cdot a + \left(a \cdot a\right))_*\right)})_*\right) \cdot 4 + \left((\left((b \cdot b + \left(a \cdot a\right))_*\right) \cdot \left((b \cdot b + \left(a \cdot a\right))_*\right) + -1)_*\right))_*\]
  5. Final simplification0.2

    \[\leadsto (\left((\left(b \cdot b\right) \cdot \left((-3 \cdot a + 1)_*\right) + \left((\left(a \cdot a\right) \cdot a + \left(a \cdot a\right))_*\right))_*\right) \cdot 4 + \left((\left((b \cdot b + \left(a \cdot a\right))_*\right) \cdot \left((b \cdot b + \left(a \cdot a\right))_*\right) + -1)_*\right))_*\]

Reproduce

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