Average Error: 0.2 → 0.0
Time: 7.0s
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(\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(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(\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
double f(double a, double b) {
        double r296765 = a;
        double r296766 = r296765 * r296765;
        double r296767 = b;
        double r296768 = r296767 * r296767;
        double r296769 = r296766 + r296768;
        double r296770 = 2.0;
        double r296771 = pow(r296769, r296770);
        double r296772 = 4.0;
        double r296773 = 1.0;
        double r296774 = r296773 + r296765;
        double r296775 = r296766 * r296774;
        double r296776 = 3.0;
        double r296777 = r296776 * r296765;
        double r296778 = r296773 - r296777;
        double r296779 = r296768 * r296778;
        double r296780 = r296775 + r296779;
        double r296781 = r296772 * r296780;
        double r296782 = r296771 + r296781;
        double r296783 = r296782 - r296773;
        return r296783;
}

double f(double a, double b) {
        double r296784 = a;
        double r296785 = b;
        double r296786 = hypot(r296784, r296785);
        double r296787 = 2.0;
        double r296788 = 2.0;
        double r296789 = r296787 * r296788;
        double r296790 = pow(r296786, r296789);
        double r296791 = 4.0;
        double r296792 = r296784 * r296784;
        double r296793 = 1.0;
        double r296794 = r296793 + r296784;
        double r296795 = r296792 * r296794;
        double r296796 = r296785 * r296785;
        double r296797 = 3.0;
        double r296798 = r296797 * r296784;
        double r296799 = r296793 - r296798;
        double r296800 = r296796 * r296799;
        double r296801 = r296795 + r296800;
        double r296802 = r296791 * r296801;
        double r296803 = r296790 + r296802;
        double r296804 = r296803 - r296793;
        return r296804;
}

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

    \[\leadsto \left(\color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot \frac{2}{2}\right)}} \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\]
  6. Simplified0.2

    \[\leadsto \left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot \frac{2}{2}\right)} \cdot \color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot \frac{2}{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\]
  7. Using strategy rm
  8. Applied pow-prod-up0.0

    \[\leadsto \left(\color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot \frac{2}{2} + 2 \cdot \frac{2}{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. Simplified0.0

    \[\leadsto \left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{\color{blue}{\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\]
  10. Final simplification0.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 \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]

Reproduce

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