\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(3 + 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(3 + a\right)\right) \le 2.61378735895491685 \cdot 10^{59}:\\
\;\;\;\;\left(\sqrt[3]{{\left({\left(a \cdot a + b \cdot b\right)}^{2}\right)}^{3}} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + 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 r200394 = a;
double r200395 = r200394 * r200394;
double r200396 = b;
double r200397 = r200396 * r200396;
double r200398 = r200395 + r200397;
double r200399 = 2.0;
double r200400 = pow(r200398, r200399);
double r200401 = 4.0;
double r200402 = 1.0;
double r200403 = r200402 - r200394;
double r200404 = r200395 * r200403;
double r200405 = 3.0;
double r200406 = r200405 + r200394;
double r200407 = r200397 * r200406;
double r200408 = r200404 + r200407;
double r200409 = r200401 * r200408;
double r200410 = r200400 + r200409;
double r200411 = r200410 - r200402;
return r200411;
}
double f(double a, double b) {
double r200412 = a;
double r200413 = r200412 * r200412;
double r200414 = b;
double r200415 = r200414 * r200414;
double r200416 = r200413 + r200415;
double r200417 = 2.0;
double r200418 = pow(r200416, r200417);
double r200419 = 4.0;
double r200420 = 1.0;
double r200421 = r200420 - r200412;
double r200422 = r200413 * r200421;
double r200423 = 3.0;
double r200424 = r200423 + r200412;
double r200425 = r200415 * r200424;
double r200426 = r200422 + r200425;
double r200427 = r200419 * r200426;
double r200428 = r200418 + r200427;
double r200429 = 2.613787358954917e+59;
bool r200430 = r200428 <= r200429;
double r200431 = 3.0;
double r200432 = pow(r200418, r200431);
double r200433 = cbrt(r200432);
double r200434 = r200433 + r200427;
double r200435 = r200434 - r200420;
double r200436 = 4.0;
double r200437 = pow(r200412, r200436);
double r200438 = pow(r200414, r200436);
double r200439 = 2.0;
double r200440 = pow(r200412, r200439);
double r200441 = pow(r200414, r200439);
double r200442 = r200440 * r200441;
double r200443 = r200439 * r200442;
double r200444 = r200438 + r200443;
double r200445 = r200437 + r200444;
double r200446 = r200445 - r200420;
double r200447 = r200430 ? r200435 : r200446;
return r200447;
}



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) (+ 3.0 a))))) < 2.613787358954917e+59Initial program 0.1
rmApplied add-cbrt-cube0.1
Simplified0.1
if 2.613787358954917e+59 < (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) Initial program 0.5
Taylor expanded around inf 0.0
Final simplification0.1
herbie shell --seed 2020083
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))