Average Error: 0.2 → 0.2
Time: 3.1s
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)}^{\left(\frac{2}{2}\right)} \cdot {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{\left(\frac{2}{2}\right)} + 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)}^{\left(\frac{2}{2}\right)} \cdot {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{\left(\frac{2}{2}\right)} + 4 \cdot \left(b \cdot b\right)\right) - 1
double f(double a, double b) {
        double r252794 = a;
        double r252795 = r252794 * r252794;
        double r252796 = b;
        double r252797 = r252796 * r252796;
        double r252798 = r252795 + r252797;
        double r252799 = 2.0;
        double r252800 = pow(r252798, r252799);
        double r252801 = 4.0;
        double r252802 = r252801 * r252797;
        double r252803 = r252800 + r252802;
        double r252804 = 1.0;
        double r252805 = r252803 - r252804;
        return r252805;
}

double f(double a, double b) {
        double r252806 = a;
        double r252807 = b;
        double r252808 = r252807 * r252807;
        double r252809 = fma(r252806, r252806, r252808);
        double r252810 = 2.0;
        double r252811 = 2.0;
        double r252812 = r252810 / r252811;
        double r252813 = pow(r252809, r252812);
        double r252814 = r252813 * r252813;
        double r252815 = 4.0;
        double r252816 = r252815 * r252808;
        double r252817 = r252814 + r252816;
        double r252818 = 1.0;
        double r252819 = r252817 - r252818;
        return r252819;
}

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 sqr-pow0.2

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

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

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

Reproduce

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