\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\sqrt[3]{\left(\left(\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}\right) \cdot \left(\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right) \cdot \mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)\right)}}}{3} \cdot \frac{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}}{a}double f(double a, double b, double c) {
double r1549510 = b;
double r1549511 = -r1549510;
double r1549512 = r1549510 * r1549510;
double r1549513 = 3.0;
double r1549514 = a;
double r1549515 = r1549513 * r1549514;
double r1549516 = c;
double r1549517 = r1549515 * r1549516;
double r1549518 = r1549512 - r1549517;
double r1549519 = sqrt(r1549518);
double r1549520 = r1549511 + r1549519;
double r1549521 = r1549520 / r1549515;
return r1549521;
}
double f(double a, double b, double c) {
double r1549522 = -3.0;
double r1549523 = a;
double r1549524 = c;
double r1549525 = r1549523 * r1549524;
double r1549526 = b;
double r1549527 = r1549526 * r1549526;
double r1549528 = fma(r1549522, r1549525, r1549527);
double r1549529 = sqrt(r1549528);
double r1549530 = sqrt(r1549529);
double r1549531 = -r1549526;
double r1549532 = fma(r1549530, r1549530, r1549531);
double r1549533 = cbrt(r1549532);
double r1549534 = r1549533 * r1549533;
double r1549535 = r1549534 * r1549533;
double r1549536 = r1549532 * r1549532;
double r1549537 = r1549535 * r1549536;
double r1549538 = cbrt(r1549537);
double r1549539 = cbrt(r1549538);
double r1549540 = r1549533 * r1549539;
double r1549541 = 3.0;
double r1549542 = r1549540 / r1549541;
double r1549543 = r1549533 / r1549523;
double r1549544 = r1549542 * r1549543;
return r1549544;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 44.7
Simplified44.7
rmApplied add-sqr-sqrt44.7
Applied sqrt-prod44.7
Applied fma-neg44.1
rmApplied add-cube-cbrt44.1
Applied times-frac44.1
rmApplied add-cbrt-cube44.1
rmApplied add-cube-cbrt44.1
Final simplification44.1
herbie shell --seed 2019152 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))