\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 \cdot b \le 1.061383019026471481028624498784720164347 \cdot 10^{-13} \lor \neg \left(b \cdot b \le 911.531239174287975401966832578182220459\right):\\
\;\;\;\;\left(\mathsf{fma}\left(2, {a}^{2} \cdot {b}^{2}, {b}^{4}\right) + {a}^{4}\right) - 1\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{{\left({\left(\mathsf{fma}\left(a, a, {b}^{2}\right)\right)}^{2}\right)}^{3}} + 4 \cdot \left(b \cdot b\right)\right) - 1\\
\end{array}double f(double a, double b) {
double r176792 = a;
double r176793 = r176792 * r176792;
double r176794 = b;
double r176795 = r176794 * r176794;
double r176796 = r176793 + r176795;
double r176797 = 2.0;
double r176798 = pow(r176796, r176797);
double r176799 = 4.0;
double r176800 = r176799 * r176795;
double r176801 = r176798 + r176800;
double r176802 = 1.0;
double r176803 = r176801 - r176802;
return r176803;
}
double f(double a, double b) {
double r176804 = b;
double r176805 = r176804 * r176804;
double r176806 = 1.0613830190264715e-13;
bool r176807 = r176805 <= r176806;
double r176808 = 911.531239174288;
bool r176809 = r176805 <= r176808;
double r176810 = !r176809;
bool r176811 = r176807 || r176810;
double r176812 = 2.0;
double r176813 = a;
double r176814 = pow(r176813, r176812);
double r176815 = pow(r176804, r176812);
double r176816 = r176814 * r176815;
double r176817 = 4.0;
double r176818 = pow(r176804, r176817);
double r176819 = fma(r176812, r176816, r176818);
double r176820 = pow(r176813, r176817);
double r176821 = r176819 + r176820;
double r176822 = 1.0;
double r176823 = r176821 - r176822;
double r176824 = fma(r176813, r176813, r176815);
double r176825 = 2.0;
double r176826 = pow(r176824, r176825);
double r176827 = 3.0;
double r176828 = pow(r176826, r176827);
double r176829 = cbrt(r176828);
double r176830 = 4.0;
double r176831 = r176830 * r176805;
double r176832 = r176829 + r176831;
double r176833 = r176832 - r176822;
double r176834 = r176811 ? r176823 : r176833;
return r176834;
}



Bits error versus a



Bits error versus b
if (* b b) < 1.0613830190264715e-13 or 911.531239174288 < (* b b) Initial program 0.2
Taylor expanded around inf 0.3
Simplified0.4
rmApplied fma-udef0.4
Simplified0.3
if 1.0613830190264715e-13 < (* b b) < 911.531239174288Initial program 0.2
rmApplied add-cbrt-cube9.0
Simplified9.0
Final simplification0.5
herbie shell --seed 2019325 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))