Average Error: 0.2 → 0.2
Time: 18.9s
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\]
\[\sqrt{\mathsf{fma}\left(a \cdot a + b \cdot b, a \cdot a + b \cdot b, \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(a + 3\right) \cdot \left(b \cdot b\right)\right) \cdot 4\right)} \cdot \sqrt{\mathsf{fma}\left(a \cdot a + b \cdot b, a \cdot a + b \cdot b, \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(a + 3\right) \cdot \left(b \cdot b\right)\right) \cdot 4\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
\sqrt{\mathsf{fma}\left(a \cdot a + b \cdot b, a \cdot a + b \cdot b, \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(a + 3\right) \cdot \left(b \cdot b\right)\right) \cdot 4\right)} \cdot \sqrt{\mathsf{fma}\left(a \cdot a + b \cdot b, a \cdot a + b \cdot b, \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(a + 3\right) \cdot \left(b \cdot b\right)\right) \cdot 4\right)} - 1
double f(double a, double b) {
        double r4089978 = a;
        double r4089979 = r4089978 * r4089978;
        double r4089980 = b;
        double r4089981 = r4089980 * r4089980;
        double r4089982 = r4089979 + r4089981;
        double r4089983 = 2.0;
        double r4089984 = pow(r4089982, r4089983);
        double r4089985 = 4.0;
        double r4089986 = 1.0;
        double r4089987 = r4089986 - r4089978;
        double r4089988 = r4089979 * r4089987;
        double r4089989 = 3.0;
        double r4089990 = r4089989 + r4089978;
        double r4089991 = r4089981 * r4089990;
        double r4089992 = r4089988 + r4089991;
        double r4089993 = r4089985 * r4089992;
        double r4089994 = r4089984 + r4089993;
        double r4089995 = r4089994 - r4089986;
        return r4089995;
}

double f(double a, double b) {
        double r4089996 = a;
        double r4089997 = r4089996 * r4089996;
        double r4089998 = b;
        double r4089999 = r4089998 * r4089998;
        double r4090000 = r4089997 + r4089999;
        double r4090001 = 1.0;
        double r4090002 = r4090001 - r4089996;
        double r4090003 = r4089997 * r4090002;
        double r4090004 = 3.0;
        double r4090005 = r4089996 + r4090004;
        double r4090006 = r4090005 * r4089999;
        double r4090007 = r4090003 + r4090006;
        double r4090008 = 4.0;
        double r4090009 = r4090007 * r4090008;
        double r4090010 = fma(r4090000, r4090000, r4090009);
        double r4090011 = sqrt(r4090010);
        double r4090012 = r4090011 * r4090011;
        double r4090013 = r4090012 - r4090001;
        return r4090013;
}

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 unpow20.2

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

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

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

Reproduce

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