\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\begin{array}{l}
\mathbf{if}\;b \le -2.424660216443879 \cdot 10^{-4} \lor \neg \left(b \le 6.0217316868572142 \cdot 10^{-5}\right):\\
\;\;\;\;\left(\mathsf{fma}\left(2 \cdot {a}^{2}, {b}^{2}, {b}^{4}\right) + 4 \cdot \left(b \cdot b\right)\right) - 1\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left({b}^{2}, 4 + 2 \cdot {a}^{2}, {a}^{4}\right) - 1\\
\end{array}double f(double a, double b) {
double r310976 = a;
double r310977 = r310976 * r310976;
double r310978 = b;
double r310979 = r310978 * r310978;
double r310980 = r310977 + r310979;
double r310981 = 2.0;
double r310982 = pow(r310980, r310981);
double r310983 = 4.0;
double r310984 = r310983 * r310979;
double r310985 = r310982 + r310984;
double r310986 = 1.0;
double r310987 = r310985 - r310986;
return r310987;
}
double f(double a, double b) {
double r310988 = b;
double r310989 = -0.00024246602164438788;
bool r310990 = r310988 <= r310989;
double r310991 = 6.021731686857214e-05;
bool r310992 = r310988 <= r310991;
double r310993 = !r310992;
bool r310994 = r310990 || r310993;
double r310995 = 2.0;
double r310996 = a;
double r310997 = 2.0;
double r310998 = pow(r310996, r310997);
double r310999 = r310995 * r310998;
double r311000 = pow(r310988, r310997);
double r311001 = 4.0;
double r311002 = pow(r310988, r311001);
double r311003 = fma(r310999, r311000, r311002);
double r311004 = 4.0;
double r311005 = r310988 * r310988;
double r311006 = r311004 * r311005;
double r311007 = r311003 + r311006;
double r311008 = 1.0;
double r311009 = r311007 - r311008;
double r311010 = r310997 * r310998;
double r311011 = r311004 + r311010;
double r311012 = pow(r310996, r311001);
double r311013 = fma(r311000, r311011, r311012);
double r311014 = r311013 - r311008;
double r311015 = r310994 ? r311009 : r311014;
return r311015;
}



Bits error versus a



Bits error versus b
if b < -0.00024246602164438788 or 6.021731686857214e-05 < b Initial program 0.5
Taylor expanded around 0 6.5
Simplified6.5
if -0.00024246602164438788 < b < 6.021731686857214e-05Initial program 0.1
Taylor expanded around 0 0.0
Simplified0.0
Final simplification1.5
herbie shell --seed 2020027 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))