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 r243858 = a;
        double r243859 = r243858 * r243858;
        double r243860 = b;
        double r243861 = r243860 * r243860;
        double r243862 = r243859 + r243861;
        double r243863 = 2.0;
        double r243864 = pow(r243862, r243863);
        double r243865 = 4.0;
        double r243866 = r243865 * r243861;
        double r243867 = r243864 + r243866;
        double r243868 = 1.0;
        double r243869 = r243867 - r243868;
        return r243869;
}

double f(double a, double b) {
        double r243870 = 4.0;
        double r243871 = b;
        double r243872 = r243870 * r243871;
        double r243873 = a;
        double r243874 = r243871 * r243871;
        double r243875 = fma(r243873, r243873, r243874);
        double r243876 = 2.0;
        double r243877 = pow(r243875, r243876);
        double r243878 = fma(r243872, r243871, r243877);
        double r243879 = 1.0;
        double r243880 = r243878 - r243879;
        return r243880;
}

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 2019179 +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))