\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) - 1double 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;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied unpow-prod-down0.2
Simplified0.2
Simplified0.2
rmApplied pow-prod-up0.0
Simplified0.0
Final simplification0.0
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))