Average Error: 0.2 → 0.1
Time: 50.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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + \mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\right)\right)\right) - 1\]
\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + \mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\right)\right)\right) - 1
double f(double a, double b) {
        double r21044157 = a;
        double r21044158 = r21044157 * r21044157;
        double r21044159 = b;
        double r21044160 = r21044159 * r21044159;
        double r21044161 = r21044158 + r21044160;
        double r21044162 = 2.0;
        double r21044163 = pow(r21044161, r21044162);
        double r21044164 = 4.0;
        double r21044165 = 1.0;
        double r21044166 = r21044165 + r21044157;
        double r21044167 = r21044158 * r21044166;
        double r21044168 = 3.0;
        double r21044169 = r21044168 * r21044157;
        double r21044170 = r21044165 - r21044169;
        double r21044171 = r21044160 * r21044170;
        double r21044172 = r21044167 + r21044171;
        double r21044173 = r21044164 * r21044172;
        double r21044174 = r21044163 + r21044173;
        double r21044175 = r21044174 - r21044165;
        return r21044175;
}

double f(double a, double b) {
        double r21044176 = 4.0;
        double r21044177 = a;
        double r21044178 = r21044177 * r21044177;
        double r21044179 = 1.0;
        double r21044180 = r21044179 + r21044177;
        double r21044181 = r21044178 * r21044180;
        double r21044182 = b;
        double r21044183 = r21044182 * r21044182;
        double r21044184 = 3.0;
        double r21044185 = r21044177 * r21044184;
        double r21044186 = r21044179 - r21044185;
        double r21044187 = r21044183 * r21044186;
        double r21044188 = r21044181 + r21044187;
        double r21044189 = r21044176 * r21044188;
        double r21044190 = 2.0;
        double r21044191 = r21044178 * r21044190;
        double r21044192 = fma(r21044182, r21044182, r21044191);
        double r21044193 = r21044192 * r21044182;
        double r21044194 = pow(r21044177, r21044176);
        double r21044195 = fma(r21044182, r21044193, r21044194);
        double r21044196 = r21044189 + r21044195;
        double r21044197 = r21044196 - r21044179;
        return r21044197;
}

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. Taylor expanded around 0 0.0

    \[\leadsto \left(\color{blue}{\left({b}^{4} + \left(2 \cdot \left({a}^{2} \cdot {b}^{2}\right) + {a}^{4}\right)\right)} + 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\]
  3. Simplified0.2

    \[\leadsto \left(\color{blue}{\mathsf{fma}\left(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \left(\left(a \cdot a\right) \cdot \left(a \cdot a\right)\right)\right)} + 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\]
  4. Taylor expanded around -inf 0.1

    \[\leadsto \left(\mathsf{fma}\left(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \color{blue}{\left({a}^{4}\right)}\right) + 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\]
  5. Final simplification0.1

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

Reproduce

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