\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 r74547 = a;
double r74548 = r74547 * r74547;
double r74549 = b;
double r74550 = r74549 * r74549;
double r74551 = r74548 + r74550;
double r74552 = 2.0;
double r74553 = pow(r74551, r74552);
double r74554 = 4.0;
double r74555 = 1.0;
double r74556 = r74555 + r74547;
double r74557 = r74548 * r74556;
double r74558 = 3.0;
double r74559 = r74558 * r74547;
double r74560 = r74555 - r74559;
double r74561 = r74550 * r74560;
double r74562 = r74557 + r74561;
double r74563 = r74554 * r74562;
double r74564 = r74553 + r74563;
double r74565 = r74564 - r74555;
return r74565;
}
double f(double a, double b) {
double r74566 = a;
double r74567 = -0.0031084792160490805;
bool r74568 = r74566 <= r74567;
double r74569 = 8.82997045828262e-05;
bool r74570 = r74566 <= r74569;
double r74571 = !r74570;
bool r74572 = r74568 || r74571;
double r74573 = 4.0;
double r74574 = r74566 * r74566;
double r74575 = 1.0;
double r74576 = r74575 + r74566;
double r74577 = b;
double r74578 = r74577 * r74577;
double r74579 = 3.0;
double r74580 = r74579 * r74566;
double r74581 = r74575 - r74580;
double r74582 = r74578 * r74581;
double r74583 = fma(r74574, r74576, r74582);
double r74584 = -1.0;
double r74585 = r74584 / r74566;
double r74586 = -4.0;
double r74587 = pow(r74585, r74586);
double r74588 = fma(r74573, r74583, r74587);
double r74589 = sqrt(r74588);
double r74590 = r74589 * r74589;
double r74591 = r74590 - r74575;
double r74592 = 2.0;
double r74593 = 2.0;
double r74594 = pow(r74566, r74593);
double r74595 = pow(r74577, r74593);
double r74596 = r74594 * r74595;
double r74597 = 4.0;
double r74598 = pow(r74577, r74597);
double r74599 = fma(r74592, r74596, r74598);
double r74600 = r74574 * r74576;
double r74601 = r74600 + r74582;
double r74602 = r74573 * r74601;
double r74603 = r74599 + r74602;
double r74604 = r74603 - r74575;
double r74605 = r74572 ? r74591 : r74604;
return r74605;
}



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