Average Error: 0.2 → 0.2
Time: 6.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(3 + a\right)\right)\right) - 1\]
\[\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + 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(3 + a\right)\right)\right) - 1
\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r407699 = a;
        double r407700 = r407699 * r407699;
        double r407701 = b;
        double r407702 = r407701 * r407701;
        double r407703 = r407700 + r407702;
        double r407704 = 2.0;
        double r407705 = pow(r407703, r407704);
        double r407706 = 4.0;
        double r407707 = 1.0;
        double r407708 = r407707 - r407699;
        double r407709 = r407700 * r407708;
        double r407710 = 3.0;
        double r407711 = r407710 + r407699;
        double r407712 = r407702 * r407711;
        double r407713 = r407709 + r407712;
        double r407714 = r407706 * r407713;
        double r407715 = r407705 + r407714;
        double r407716 = r407715 - r407707;
        return r407716;
}

double f(double a, double b) {
        double r407717 = a;
        double r407718 = r407717 * r407717;
        double r407719 = b;
        double r407720 = r407719 * r407719;
        double r407721 = r407718 + r407720;
        double r407722 = 2.0;
        double r407723 = 2.0;
        double r407724 = r407722 / r407723;
        double r407725 = pow(r407721, r407724);
        double r407726 = 4.0;
        double r407727 = 1.0;
        double r407728 = r407727 - r407717;
        double r407729 = r407718 * r407728;
        double r407730 = 3.0;
        double r407731 = r407730 + r407717;
        double r407732 = r407720 * r407731;
        double r407733 = r407729 + r407732;
        double r407734 = r407726 * r407733;
        double r407735 = fma(r407725, r407725, r407734);
        double r407736 = r407735 - r407727;
        return r407736;
}

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(3 + a\right)\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(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  4. Applied fma-def0.2

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

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

Reproduce

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