Average Error: 0.2 → 0.2
Time: 4.8s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\left({\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\left({\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
double f(double a, double b) {
        double r276883 = a;
        double r276884 = r276883 * r276883;
        double r276885 = b;
        double r276886 = r276885 * r276885;
        double r276887 = r276884 + r276886;
        double r276888 = 2.0;
        double r276889 = pow(r276887, r276888);
        double r276890 = 4.0;
        double r276891 = r276890 * r276886;
        double r276892 = r276889 + r276891;
        double r276893 = 1.0;
        double r276894 = r276892 - r276893;
        return r276894;
}

double f(double a, double b) {
        double r276895 = a;
        double r276896 = b;
        double r276897 = r276896 * r276896;
        double r276898 = fma(r276895, r276895, r276897);
        double r276899 = 2.0;
        double r276900 = pow(r276898, r276899);
        double r276901 = 4.0;
        double r276902 = r276901 * r276897;
        double r276903 = r276900 + r276902;
        double r276904 = 1.0;
        double r276905 = r276903 - r276904;
        return r276905;
}

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. Using strategy rm
  3. Applied *-un-lft-identity0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{\color{blue}{\left(1 \cdot 2\right)}} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
  4. Applied pow-unpow0.2

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

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

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

Reproduce

herbie shell --seed 2019344 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))