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



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