\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\begin{array}{l}
\mathbf{if}\;a \le -0.003108479216049080465222864688712434144691 \lor \neg \left(a \le 8.829970458282619509299965487869599201076 \cdot 10^{-5}\right):\\
\;\;\;\;\sqrt{{\left(\frac{-1}{a}\right)}^{-4} + 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)} \cdot \sqrt{{\left(\frac{-1}{a}\right)}^{-4} + 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)} - 1\\
\mathbf{else}:\\
\;\;\;\;\left(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\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\\
\end{array}double f(double a, double b) {
double r154737 = a;
double r154738 = r154737 * r154737;
double r154739 = b;
double r154740 = r154739 * r154739;
double r154741 = r154738 + r154740;
double r154742 = 2.0;
double r154743 = pow(r154741, r154742);
double r154744 = 4.0;
double r154745 = 1.0;
double r154746 = r154745 + r154737;
double r154747 = r154738 * r154746;
double r154748 = 3.0;
double r154749 = r154748 * r154737;
double r154750 = r154745 - r154749;
double r154751 = r154740 * r154750;
double r154752 = r154747 + r154751;
double r154753 = r154744 * r154752;
double r154754 = r154743 + r154753;
double r154755 = r154754 - r154745;
return r154755;
}
double f(double a, double b) {
double r154756 = a;
double r154757 = -0.0031084792160490805;
bool r154758 = r154756 <= r154757;
double r154759 = 8.82997045828262e-05;
bool r154760 = r154756 <= r154759;
double r154761 = !r154760;
bool r154762 = r154758 || r154761;
double r154763 = -1.0;
double r154764 = r154763 / r154756;
double r154765 = -4.0;
double r154766 = pow(r154764, r154765);
double r154767 = 4.0;
double r154768 = r154756 * r154756;
double r154769 = 1.0;
double r154770 = r154769 + r154756;
double r154771 = r154768 * r154770;
double r154772 = b;
double r154773 = r154772 * r154772;
double r154774 = 3.0;
double r154775 = r154774 * r154756;
double r154776 = r154769 - r154775;
double r154777 = r154773 * r154776;
double r154778 = r154771 + r154777;
double r154779 = r154767 * r154778;
double r154780 = r154766 + r154779;
double r154781 = sqrt(r154780);
double r154782 = r154781 * r154781;
double r154783 = r154782 - r154769;
double r154784 = 4.0;
double r154785 = pow(r154772, r154784);
double r154786 = 2.0;
double r154787 = 2.0;
double r154788 = pow(r154756, r154787);
double r154789 = pow(r154772, r154787);
double r154790 = r154788 * r154789;
double r154791 = r154786 * r154790;
double r154792 = r154785 + r154791;
double r154793 = r154792 + r154779;
double r154794 = r154793 - r154769;
double r154795 = r154762 ? r154783 : r154794;
return r154795;
}



Bits error versus a



Bits error versus b
Results
if a < -0.0031084792160490805 or 8.82997045828262e-05 < a Initial program 0.5
Taylor expanded around -inf 7.5
rmApplied add-sqr-sqrt7.6
if -0.0031084792160490805 < a < 8.82997045828262e-05Initial program 0.1
Taylor expanded around 0 0.0
Final simplification1.5
herbie shell --seed 2019326
(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))