Average Error: 0.2 → 0.0
Time: 1.3m
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\]
\[{\left(\mathsf{hypot}\left(a, b\right)\right)}^{4} + \left(4 \cdot \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(1 - a\right) \cdot \left(a \cdot a\right)\right) - 1\right)\]
\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
{\left(\mathsf{hypot}\left(a, b\right)\right)}^{4} + \left(4 \cdot \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(1 - a\right) \cdot \left(a \cdot a\right)\right) - 1\right)
double f(double a, double b) {
        double r36462875 = a;
        double r36462876 = r36462875 * r36462875;
        double r36462877 = b;
        double r36462878 = r36462877 * r36462877;
        double r36462879 = r36462876 + r36462878;
        double r36462880 = 2.0;
        double r36462881 = pow(r36462879, r36462880);
        double r36462882 = 4.0;
        double r36462883 = 1.0;
        double r36462884 = r36462883 - r36462875;
        double r36462885 = r36462876 * r36462884;
        double r36462886 = 3.0;
        double r36462887 = r36462886 + r36462875;
        double r36462888 = r36462878 * r36462887;
        double r36462889 = r36462885 + r36462888;
        double r36462890 = r36462882 * r36462889;
        double r36462891 = r36462881 + r36462890;
        double r36462892 = r36462891 - r36462883;
        return r36462892;
}

double f(double a, double b) {
        double r36462893 = a;
        double r36462894 = b;
        double r36462895 = hypot(r36462893, r36462894);
        double r36462896 = 4.0;
        double r36462897 = pow(r36462895, r36462896);
        double r36462898 = 3.0;
        double r36462899 = r36462893 + r36462898;
        double r36462900 = r36462894 * r36462894;
        double r36462901 = r36462899 * r36462900;
        double r36462902 = 1.0;
        double r36462903 = r36462902 - r36462893;
        double r36462904 = r36462893 * r36462893;
        double r36462905 = r36462903 * r36462904;
        double r36462906 = r36462901 + r36462905;
        double r36462907 = r36462896 * r36462906;
        double r36462908 = r36462907 - r36462902;
        double r36462909 = r36462897 + r36462908;
        return r36462909;
}

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(3 + a\right)\right)\right) - 1\]
  2. Using strategy rm
  3. Applied associate--l+0.2

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

    \[\leadsto \color{blue}{\left(\mathsf{hypot}\left(a, b\right) \cdot \mathsf{hypot}\left(a, b\right)\right) \cdot \left(\mathsf{hypot}\left(a, b\right) \cdot \mathsf{hypot}\left(a, b\right)\right)} + \left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) - 1\right)\]
  5. Using strategy rm
  6. Applied pow20.2

    \[\leadsto \left(\mathsf{hypot}\left(a, b\right) \cdot \mathsf{hypot}\left(a, b\right)\right) \cdot \color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\right)}^{2}} + \left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) - 1\right)\]
  7. Applied pow20.2

    \[\leadsto \color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\right)}^{2}} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{2} + \left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) - 1\right)\]
  8. Applied pow-sqr0.0

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

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

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

Reproduce

herbie shell --seed 2019124 +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))