\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 -2.4039381575323349 \lor \neg \left(a \le 0.41783821227377071\right):\\
\;\;\;\;\sqrt{\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(a \cdot a + b \cdot b\right)}^{2} - 1\right)} \cdot \sqrt{\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(a \cdot a + b \cdot b\right)}^{2} - 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), \mathsf{fma}\left(2 \cdot {a}^{2}, {b}^{2}, {b}^{4}\right) - 1\right)\\
\end{array}double f(double a, double b) {
double r487347 = a;
double r487348 = r487347 * r487347;
double r487349 = b;
double r487350 = r487349 * r487349;
double r487351 = r487348 + r487350;
double r487352 = 2.0;
double r487353 = pow(r487351, r487352);
double r487354 = 4.0;
double r487355 = 1.0;
double r487356 = r487355 + r487347;
double r487357 = r487348 * r487356;
double r487358 = 3.0;
double r487359 = r487358 * r487347;
double r487360 = r487355 - r487359;
double r487361 = r487350 * r487360;
double r487362 = r487357 + r487361;
double r487363 = r487354 * r487362;
double r487364 = r487353 + r487363;
double r487365 = r487364 - r487355;
return r487365;
}
double f(double a, double b) {
double r487366 = a;
double r487367 = -2.403938157532335;
bool r487368 = r487366 <= r487367;
double r487369 = 0.4178382122737707;
bool r487370 = r487366 <= r487369;
double r487371 = !r487370;
bool r487372 = r487368 || r487371;
double r487373 = 4.0;
double r487374 = r487366 * r487366;
double r487375 = 1.0;
double r487376 = r487375 + r487366;
double r487377 = b;
double r487378 = r487377 * r487377;
double r487379 = 3.0;
double r487380 = r487379 * r487366;
double r487381 = r487375 - r487380;
double r487382 = r487378 * r487381;
double r487383 = fma(r487374, r487376, r487382);
double r487384 = r487374 + r487378;
double r487385 = 2.0;
double r487386 = pow(r487384, r487385);
double r487387 = r487386 - r487375;
double r487388 = fma(r487373, r487383, r487387);
double r487389 = sqrt(r487388);
double r487390 = r487389 * r487389;
double r487391 = 2.0;
double r487392 = pow(r487366, r487391);
double r487393 = r487385 * r487392;
double r487394 = pow(r487377, r487391);
double r487395 = 4.0;
double r487396 = pow(r487377, r487395);
double r487397 = fma(r487393, r487394, r487396);
double r487398 = r487397 - r487375;
double r487399 = fma(r487373, r487383, r487398);
double r487400 = r487372 ? r487390 : r487399;
return r487400;
}



Bits error versus a



Bits error versus b
if a < -2.403938157532335 or 0.4178382122737707 < a Initial program 0.5
Simplified0.5
rmApplied add-sqr-sqrt0.6
if -2.403938157532335 < a < 0.4178382122737707Initial program 0.1
Simplified0.1
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.4
herbie shell --seed 2020046 +o rules:numerics
(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))