\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 1313320090948755923146506866998116352:\\
\;\;\;\;e^{\log \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\\
\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 r81861 = a;
double r81862 = r81861 * r81861;
double r81863 = b;
double r81864 = r81863 * r81863;
double r81865 = r81862 + r81864;
double r81866 = 2.0;
double r81867 = pow(r81865, r81866);
double r81868 = 4.0;
double r81869 = 1.0;
double r81870 = r81869 + r81861;
double r81871 = r81862 * r81870;
double r81872 = 3.0;
double r81873 = r81872 * r81861;
double r81874 = r81869 - r81873;
double r81875 = r81864 * r81874;
double r81876 = r81871 + r81875;
double r81877 = r81868 * r81876;
double r81878 = r81867 + r81877;
double r81879 = r81878 - r81869;
return r81879;
}
double f(double a, double b) {
double r81880 = a;
double r81881 = r81880 * r81880;
double r81882 = b;
double r81883 = r81882 * r81882;
double r81884 = r81881 + r81883;
double r81885 = 2.0;
double r81886 = pow(r81884, r81885);
double r81887 = 4.0;
double r81888 = 1.0;
double r81889 = r81888 + r81880;
double r81890 = r81881 * r81889;
double r81891 = 3.0;
double r81892 = r81891 * r81880;
double r81893 = r81888 - r81892;
double r81894 = r81883 * r81893;
double r81895 = r81890 + r81894;
double r81896 = r81887 * r81895;
double r81897 = r81886 + r81896;
double r81898 = 1.3133200909487559e+36;
bool r81899 = r81897 <= r81898;
double r81900 = log(r81897);
double r81901 = exp(r81900);
double r81902 = r81901 - r81888;
double r81903 = 4.0;
double r81904 = pow(r81880, r81903);
double r81905 = pow(r81882, r81903);
double r81906 = 2.0;
double r81907 = pow(r81880, r81906);
double r81908 = pow(r81882, r81906);
double r81909 = r81907 * r81908;
double r81910 = r81906 * r81909;
double r81911 = r81905 + r81910;
double r81912 = r81904 + r81911;
double r81913 = r81912 - r81888;
double r81914 = r81899 ? r81902 : r81913;
return r81914;
}



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.3133200909487559e+36Initial program 0.0
rmApplied add-exp-log0.2
if 1.3133200909487559e+36 < (+ (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.6
Final simplification0.3
herbie shell --seed 2019297
(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))