\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 r151011 = a;
double r151012 = r151011 * r151011;
double r151013 = b;
double r151014 = r151013 * r151013;
double r151015 = r151012 + r151014;
double r151016 = 2.0;
double r151017 = pow(r151015, r151016);
double r151018 = 4.0;
double r151019 = 1.0;
double r151020 = r151019 + r151011;
double r151021 = r151012 * r151020;
double r151022 = 3.0;
double r151023 = r151022 * r151011;
double r151024 = r151019 - r151023;
double r151025 = r151014 * r151024;
double r151026 = r151021 + r151025;
double r151027 = r151018 * r151026;
double r151028 = r151017 + r151027;
double r151029 = r151028 - r151019;
return r151029;
}
double f(double a, double b) {
double r151030 = a;
double r151031 = -0.0031084792160490805;
bool r151032 = r151030 <= r151031;
double r151033 = 8.82997045828262e-05;
bool r151034 = r151030 <= r151033;
double r151035 = !r151034;
bool r151036 = r151032 || r151035;
double r151037 = -1.0;
double r151038 = r151037 / r151030;
double r151039 = -4.0;
double r151040 = pow(r151038, r151039);
double r151041 = 4.0;
double r151042 = r151030 * r151030;
double r151043 = 1.0;
double r151044 = r151043 + r151030;
double r151045 = r151042 * r151044;
double r151046 = b;
double r151047 = r151046 * r151046;
double r151048 = 3.0;
double r151049 = r151048 * r151030;
double r151050 = r151043 - r151049;
double r151051 = r151047 * r151050;
double r151052 = r151045 + r151051;
double r151053 = r151041 * r151052;
double r151054 = r151040 + r151053;
double r151055 = sqrt(r151054);
double r151056 = r151055 * r151055;
double r151057 = r151056 - r151043;
double r151058 = 4.0;
double r151059 = pow(r151046, r151058);
double r151060 = 2.0;
double r151061 = 2.0;
double r151062 = pow(r151030, r151061);
double r151063 = pow(r151046, r151061);
double r151064 = r151062 * r151063;
double r151065 = r151060 * r151064;
double r151066 = r151059 + r151065;
double r151067 = r151066 + r151053;
double r151068 = r151067 - r151043;
double r151069 = r151036 ? r151057 : r151068;
return r151069;
}



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))