\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):\\
\;\;\;\;\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(\frac{-1}{a}\right)}^{-4}\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(\frac{-1}{a}\right)}^{-4}\right)} - 1\\
\mathbf{else}:\\
\;\;\;\;\left(\mathsf{fma}\left(2, {a}^{2} \cdot {b}^{2}, {b}^{4}\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 r269340 = a;
double r269341 = r269340 * r269340;
double r269342 = b;
double r269343 = r269342 * r269342;
double r269344 = r269341 + r269343;
double r269345 = 2.0;
double r269346 = pow(r269344, r269345);
double r269347 = 4.0;
double r269348 = 1.0;
double r269349 = r269348 + r269340;
double r269350 = r269341 * r269349;
double r269351 = 3.0;
double r269352 = r269351 * r269340;
double r269353 = r269348 - r269352;
double r269354 = r269343 * r269353;
double r269355 = r269350 + r269354;
double r269356 = r269347 * r269355;
double r269357 = r269346 + r269356;
double r269358 = r269357 - r269348;
return r269358;
}
double f(double a, double b) {
double r269359 = a;
double r269360 = -0.0031084792160490805;
bool r269361 = r269359 <= r269360;
double r269362 = 8.82997045828262e-05;
bool r269363 = r269359 <= r269362;
double r269364 = !r269363;
bool r269365 = r269361 || r269364;
double r269366 = 4.0;
double r269367 = r269359 * r269359;
double r269368 = 1.0;
double r269369 = r269368 + r269359;
double r269370 = b;
double r269371 = r269370 * r269370;
double r269372 = 3.0;
double r269373 = r269372 * r269359;
double r269374 = r269368 - r269373;
double r269375 = r269371 * r269374;
double r269376 = fma(r269367, r269369, r269375);
double r269377 = -1.0;
double r269378 = r269377 / r269359;
double r269379 = -4.0;
double r269380 = pow(r269378, r269379);
double r269381 = fma(r269366, r269376, r269380);
double r269382 = sqrt(r269381);
double r269383 = r269382 * r269382;
double r269384 = r269383 - r269368;
double r269385 = 2.0;
double r269386 = 2.0;
double r269387 = pow(r269359, r269386);
double r269388 = pow(r269370, r269386);
double r269389 = r269387 * r269388;
double r269390 = 4.0;
double r269391 = pow(r269370, r269390);
double r269392 = fma(r269385, r269389, r269391);
double r269393 = r269367 * r269369;
double r269394 = r269393 + r269375;
double r269395 = r269366 * r269394;
double r269396 = r269392 + r269395;
double r269397 = r269396 - r269368;
double r269398 = r269365 ? r269384 : r269397;
return r269398;
}



Bits error versus a



Bits error versus b
if a < -0.0031084792160490805 or 8.82997045828262e-05 < a Initial program 0.5
Taylor expanded around -inf 7.5
rmApplied add-sqr-sqrt7.6
Simplified7.6
Simplified7.6
if -0.0031084792160490805 < a < 8.82997045828262e-05Initial program 0.1
Taylor expanded around 0 0.0
Simplified0.0
Final simplification1.5
herbie shell --seed 2019326 +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))