\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 r208026 = a;
double r208027 = r208026 * r208026;
double r208028 = b;
double r208029 = r208028 * r208028;
double r208030 = r208027 + r208029;
double r208031 = 2.0;
double r208032 = pow(r208030, r208031);
double r208033 = 4.0;
double r208034 = 1.0;
double r208035 = r208034 + r208026;
double r208036 = r208027 * r208035;
double r208037 = 3.0;
double r208038 = r208037 * r208026;
double r208039 = r208034 - r208038;
double r208040 = r208029 * r208039;
double r208041 = r208036 + r208040;
double r208042 = r208033 * r208041;
double r208043 = r208032 + r208042;
double r208044 = r208043 - r208034;
return r208044;
}
double f(double a, double b) {
double r208045 = a;
double r208046 = r208045 * r208045;
double r208047 = b;
double r208048 = r208047 * r208047;
double r208049 = r208046 + r208048;
double r208050 = 2.0;
double r208051 = pow(r208049, r208050);
double r208052 = 4.0;
double r208053 = 1.0;
double r208054 = r208053 + r208045;
double r208055 = r208046 * r208054;
double r208056 = 3.0;
double r208057 = r208056 * r208045;
double r208058 = r208053 - r208057;
double r208059 = r208048 * r208058;
double r208060 = r208055 + r208059;
double r208061 = r208052 * r208060;
double r208062 = r208051 + r208061;
double r208063 = 1.3133200909487559e+36;
bool r208064 = r208062 <= r208063;
double r208065 = log(r208062);
double r208066 = exp(r208065);
double r208067 = r208066 - r208053;
double r208068 = 4.0;
double r208069 = pow(r208045, r208068);
double r208070 = pow(r208047, r208068);
double r208071 = 2.0;
double r208072 = pow(r208045, r208071);
double r208073 = pow(r208047, r208071);
double r208074 = r208072 * r208073;
double r208075 = r208071 * r208074;
double r208076 = r208070 + r208075;
double r208077 = r208069 + r208076;
double r208078 = r208077 - r208053;
double r208079 = r208064 ? r208067 : r208078;
return r208079;
}



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