\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}\;a \le -0.003108479216049080465222864688712434144691 \lor \neg \left(a \le 8.829970458282619509299965487869599201076 \cdot 10^{-5}\right):\\
\;\;\;\;\left({a}^{4} + 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(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right) + 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\\
\end{array}double f(double a, double b) {
double r203407 = a;
double r203408 = r203407 * r203407;
double r203409 = b;
double r203410 = r203409 * r203409;
double r203411 = r203408 + r203410;
double r203412 = 2.0;
double r203413 = pow(r203411, r203412);
double r203414 = 4.0;
double r203415 = 1.0;
double r203416 = r203415 + r203407;
double r203417 = r203408 * r203416;
double r203418 = 3.0;
double r203419 = r203418 * r203407;
double r203420 = r203415 - r203419;
double r203421 = r203410 * r203420;
double r203422 = r203417 + r203421;
double r203423 = r203414 * r203422;
double r203424 = r203413 + r203423;
double r203425 = r203424 - r203415;
return r203425;
}
double f(double a, double b) {
double r203426 = a;
double r203427 = -0.0031084792160490805;
bool r203428 = r203426 <= r203427;
double r203429 = 8.82997045828262e-05;
bool r203430 = r203426 <= r203429;
double r203431 = !r203430;
bool r203432 = r203428 || r203431;
double r203433 = 4.0;
double r203434 = pow(r203426, r203433);
double r203435 = r203426 * r203426;
double r203436 = 1.0;
double r203437 = r203436 + r203426;
double r203438 = r203435 * r203437;
double r203439 = b;
double r203440 = r203439 * r203439;
double r203441 = 3.0;
double r203442 = r203441 * r203426;
double r203443 = r203436 - r203442;
double r203444 = r203440 * r203443;
double r203445 = r203438 + r203444;
double r203446 = r203433 * r203445;
double r203447 = r203434 + r203446;
double r203448 = r203447 - r203436;
double r203449 = 4.0;
double r203450 = pow(r203439, r203449);
double r203451 = 2.0;
double r203452 = 2.0;
double r203453 = pow(r203426, r203452);
double r203454 = pow(r203439, r203452);
double r203455 = r203453 * r203454;
double r203456 = r203451 * r203455;
double r203457 = r203450 + r203456;
double r203458 = r203457 + r203446;
double r203459 = r203458 - r203436;
double r203460 = r203432 ? r203448 : r203459;
return r203460;
}



Bits error versus a



Bits error versus b
Results
if a < -0.0031084792160490805 or 8.82997045828262e-05 < a Initial program 0.5
Taylor expanded around inf 7.5
Taylor expanded around 0 6.7
if -0.0031084792160490805 < a < 8.82997045828262e-05Initial program 0.1
Taylor expanded around 0 0.0
Final simplification1.4
herbie shell --seed 2019326
(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))