\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}\;{\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) \le 1.518149101387913421177978107255154532669 \cdot 10^{64}:\\
\;\;\;\;\sqrt[3]{{\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)}^{3}} - 1\\
\mathbf{else}:\\
\;\;\;\;\left({a}^{4} + \left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right) - 1\\
\end{array}double f(double a, double b) {
double r150868 = a;
double r150869 = r150868 * r150868;
double r150870 = b;
double r150871 = r150870 * r150870;
double r150872 = r150869 + r150871;
double r150873 = 2.0;
double r150874 = pow(r150872, r150873);
double r150875 = 4.0;
double r150876 = 1.0;
double r150877 = r150876 + r150868;
double r150878 = r150869 * r150877;
double r150879 = 3.0;
double r150880 = r150879 * r150868;
double r150881 = r150876 - r150880;
double r150882 = r150871 * r150881;
double r150883 = r150878 + r150882;
double r150884 = r150875 * r150883;
double r150885 = r150874 + r150884;
double r150886 = r150885 - r150876;
return r150886;
}
double f(double a, double b) {
double r150887 = a;
double r150888 = r150887 * r150887;
double r150889 = b;
double r150890 = r150889 * r150889;
double r150891 = r150888 + r150890;
double r150892 = 2.0;
double r150893 = pow(r150891, r150892);
double r150894 = 4.0;
double r150895 = 1.0;
double r150896 = r150895 + r150887;
double r150897 = r150888 * r150896;
double r150898 = 3.0;
double r150899 = r150898 * r150887;
double r150900 = r150895 - r150899;
double r150901 = r150890 * r150900;
double r150902 = r150897 + r150901;
double r150903 = r150894 * r150902;
double r150904 = r150893 + r150903;
double r150905 = 1.5181491013879134e+64;
bool r150906 = r150904 <= r150905;
double r150907 = 3.0;
double r150908 = pow(r150904, r150907);
double r150909 = cbrt(r150908);
double r150910 = r150909 - r150895;
double r150911 = 4.0;
double r150912 = pow(r150887, r150911);
double r150913 = pow(r150889, r150911);
double r150914 = 2.0;
double r150915 = pow(r150887, r150914);
double r150916 = pow(r150889, r150914);
double r150917 = r150915 * r150916;
double r150918 = r150914 * r150917;
double r150919 = r150913 + r150918;
double r150920 = r150912 + r150919;
double r150921 = r150920 - r150895;
double r150922 = r150906 ? r150910 : r150921;
return r150922;
}



Bits error versus a



Bits error versus b
Results
if (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) < 1.5181491013879134e+64Initial program 0.1
rmApplied add-cbrt-cube0.1
Simplified0.1
if 1.5181491013879134e+64 < (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) Initial program 0.5
Taylor expanded around inf 0.0
Final simplification0.1
herbie shell --seed 2019212
(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))