Average Error: 0.2 → 0.2
Time: 28.5s
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\]
\[\sqrt{\mathsf{fma}\left(\mathsf{fma}\left(b, b, \left(1 \cdot a\right) \cdot a\right), \sqrt{{\left(b \cdot b + a \cdot a\right)}^{2}}, 4 \cdot \left(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a + 1\right) \cdot \left(a \cdot a\right)\right)\right)} \cdot \sqrt{\mathsf{fma}\left(\mathsf{fma}\left(b, b, \left(1 \cdot a\right) \cdot a\right), \sqrt{{\left(b \cdot b + a \cdot a\right)}^{2}}, 4 \cdot \left(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a + 1\right) \cdot \left(a \cdot a\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
\sqrt{\mathsf{fma}\left(\mathsf{fma}\left(b, b, \left(1 \cdot a\right) \cdot a\right), \sqrt{{\left(b \cdot b + a \cdot a\right)}^{2}}, 4 \cdot \left(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a + 1\right) \cdot \left(a \cdot a\right)\right)\right)} \cdot \sqrt{\mathsf{fma}\left(\mathsf{fma}\left(b, b, \left(1 \cdot a\right) \cdot a\right), \sqrt{{\left(b \cdot b + a \cdot a\right)}^{2}}, 4 \cdot \left(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a + 1\right) \cdot \left(a \cdot a\right)\right)\right)} - 1
double f(double a, double b) {
        double r4134087 = a;
        double r4134088 = r4134087 * r4134087;
        double r4134089 = b;
        double r4134090 = r4134089 * r4134089;
        double r4134091 = r4134088 + r4134090;
        double r4134092 = 2.0;
        double r4134093 = pow(r4134091, r4134092);
        double r4134094 = 4.0;
        double r4134095 = 1.0;
        double r4134096 = r4134095 + r4134087;
        double r4134097 = r4134088 * r4134096;
        double r4134098 = 3.0;
        double r4134099 = r4134098 * r4134087;
        double r4134100 = r4134095 - r4134099;
        double r4134101 = r4134090 * r4134100;
        double r4134102 = r4134097 + r4134101;
        double r4134103 = r4134094 * r4134102;
        double r4134104 = r4134093 + r4134103;
        double r4134105 = r4134104 - r4134095;
        return r4134105;
}

double f(double a, double b) {
        double r4134106 = b;
        double r4134107 = 1.0;
        double r4134108 = a;
        double r4134109 = r4134107 * r4134108;
        double r4134110 = r4134109 * r4134108;
        double r4134111 = fma(r4134106, r4134106, r4134110);
        double r4134112 = r4134106 * r4134106;
        double r4134113 = r4134108 * r4134108;
        double r4134114 = r4134112 + r4134113;
        double r4134115 = 2.0;
        double r4134116 = pow(r4134114, r4134115);
        double r4134117 = sqrt(r4134116);
        double r4134118 = 4.0;
        double r4134119 = 3.0;
        double r4134120 = r4134119 * r4134108;
        double r4134121 = r4134107 - r4134120;
        double r4134122 = r4134121 * r4134112;
        double r4134123 = r4134108 + r4134107;
        double r4134124 = r4134123 * r4134113;
        double r4134125 = r4134122 + r4134124;
        double r4134126 = r4134118 * r4134125;
        double r4134127 = fma(r4134111, r4134117, r4134126);
        double r4134128 = sqrt(r4134127);
        double r4134129 = r4134128 * r4134128;
        double r4134130 = r4134129 - r4134107;
        return r4134130;
}

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. Using strategy rm
  3. Applied add-sqr-sqrt0.2

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

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

    \[\leadsto \mathsf{fma}\left(\color{blue}{1 \cdot {a}^{2} + {b}^{2}}, \sqrt{{\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\]
  6. Simplified0.2

    \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(b, b, a \cdot \left(a \cdot 1\right)\right)}, \sqrt{{\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\]
  7. Using strategy rm
  8. Applied add-sqr-sqrt0.2

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

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

Reproduce

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