Average Error: 0.2 → 0.0
Time: 10.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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\right)} + 4 \cdot \left(\frac{\left(a \cdot a\right) \cdot \left(1 \cdot 1 - a \cdot a\right)}{1 - a} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)\right) - 1
\left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\right)} + 4 \cdot \left(\frac{\left(a \cdot a\right) \cdot \left(1 \cdot 1 - a \cdot a\right)}{1 - a} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r232980 = a;
        double r232981 = r232980 * r232980;
        double r232982 = b;
        double r232983 = r232982 * r232982;
        double r232984 = r232981 + r232983;
        double r232985 = 2.0;
        double r232986 = pow(r232984, r232985);
        double r232987 = 4.0;
        double r232988 = 1.0;
        double r232989 = r232988 + r232980;
        double r232990 = r232981 * r232989;
        double r232991 = 3.0;
        double r232992 = r232991 * r232980;
        double r232993 = r232988 - r232992;
        double r232994 = r232983 * r232993;
        double r232995 = r232990 + r232994;
        double r232996 = r232987 * r232995;
        double r232997 = r232986 + r232996;
        double r232998 = r232997 - r232988;
        return r232998;
}

double f(double a, double b) {
        double r232999 = a;
        double r233000 = b;
        double r233001 = hypot(r232999, r233000);
        double r233002 = 2.0;
        double r233003 = 2.0;
        double r233004 = r233002 * r233003;
        double r233005 = pow(r233001, r233004);
        double r233006 = 4.0;
        double r233007 = r232999 * r232999;
        double r233008 = 1.0;
        double r233009 = r233008 * r233008;
        double r233010 = r233009 - r233007;
        double r233011 = r233007 * r233010;
        double r233012 = r233008 - r232999;
        double r233013 = r233011 / r233012;
        double r233014 = r233000 * r233000;
        double r233015 = 3.0;
        double r233016 = r233015 * r232999;
        double r233017 = r233008 - r233016;
        double r233018 = r233014 * r233017;
        double r233019 = r233013 + r233018;
        double r233020 = r233006 * r233019;
        double r233021 = r233005 + r233020;
        double r233022 = r233021 - r233008;
        return r233022;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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(1 - 3 \cdot a\right)\right)\right) - 1\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.2

    \[\leadsto \left({\color{blue}{\left(\sqrt{a \cdot a + b \cdot b} \cdot \sqrt{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(1 - 3 \cdot a\right)\right)\right) - 1\]
  4. Applied unpow-prod-down0.2

    \[\leadsto \left(\color{blue}{{\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2} \cdot {\left(\sqrt{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(1 - 3 \cdot a\right)\right)\right) - 1\]
  5. Applied fma-def0.2

    \[\leadsto \color{blue}{\mathsf{fma}\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}, {\left(\sqrt{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(1 - 3 \cdot a\right)\right)\right)} - 1\]
  6. Using strategy rm
  7. Applied fma-udef0.2

    \[\leadsto \color{blue}{\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2} \cdot {\left(\sqrt{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(1 - 3 \cdot a\right)\right)\right)} - 1\]
  8. Simplified0.0

    \[\leadsto \left(\color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\right)}} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  9. Using strategy rm
  10. Applied flip-+0.0

    \[\leadsto \left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\right)} + 4 \cdot \left(\left(a \cdot a\right) \cdot \color{blue}{\frac{1 \cdot 1 - a \cdot a}{1 - a}} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  11. Applied associate-*r/0.0

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

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

Reproduce

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