\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 r150237 = a;
double r150238 = r150237 * r150237;
double r150239 = b;
double r150240 = r150239 * r150239;
double r150241 = r150238 + r150240;
double r150242 = 2.0;
double r150243 = pow(r150241, r150242);
double r150244 = 4.0;
double r150245 = 1.0;
double r150246 = r150245 + r150237;
double r150247 = r150238 * r150246;
double r150248 = 3.0;
double r150249 = r150248 * r150237;
double r150250 = r150245 - r150249;
double r150251 = r150240 * r150250;
double r150252 = r150247 + r150251;
double r150253 = r150244 * r150252;
double r150254 = r150243 + r150253;
double r150255 = r150254 - r150245;
return r150255;
}
double f(double a, double b) {
double r150256 = a;
double r150257 = r150256 * r150256;
double r150258 = b;
double r150259 = r150258 * r150258;
double r150260 = r150257 + r150259;
double r150261 = 2.0;
double r150262 = pow(r150260, r150261);
double r150263 = 4.0;
double r150264 = 1.0;
double r150265 = r150264 + r150256;
double r150266 = r150257 * r150265;
double r150267 = 3.0;
double r150268 = r150267 * r150256;
double r150269 = r150264 - r150268;
double r150270 = r150259 * r150269;
double r150271 = r150266 + r150270;
double r150272 = r150263 * r150271;
double r150273 = r150262 + r150272;
double r150274 = 1.5181491013879134e+64;
bool r150275 = r150273 <= r150274;
double r150276 = 3.0;
double r150277 = pow(r150273, r150276);
double r150278 = cbrt(r150277);
double r150279 = r150278 - r150264;
double r150280 = 4.0;
double r150281 = pow(r150256, r150280);
double r150282 = pow(r150258, r150280);
double r150283 = 2.0;
double r150284 = pow(r150256, r150283);
double r150285 = pow(r150258, r150283);
double r150286 = r150284 * r150285;
double r150287 = r150283 * r150286;
double r150288 = r150282 + r150287;
double r150289 = r150281 + r150288;
double r150290 = r150289 - r150264;
double r150291 = r150275 ? r150279 : r150290;
return r150291;
}



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