\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left(\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)}}, -b\right)}} \cdot \left(\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)}}, -b\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)}}, -b\right)}}\right)\right) \cdot \left(\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\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(b, b, \left(a \cdot c\right) \cdot -3\right)}}, -b\right)}\right)}{a \cdot 3}double f(double a, double b, double c) {
double r3732500 = b;
double r3732501 = -r3732500;
double r3732502 = r3732500 * r3732500;
double r3732503 = 3.0;
double r3732504 = a;
double r3732505 = r3732503 * r3732504;
double r3732506 = c;
double r3732507 = r3732505 * r3732506;
double r3732508 = r3732502 - r3732507;
double r3732509 = sqrt(r3732508);
double r3732510 = r3732501 + r3732509;
double r3732511 = r3732510 / r3732505;
return r3732511;
}
double f(double a, double b, double c) {
double r3732512 = -3.0;
double r3732513 = a;
double r3732514 = c;
double r3732515 = r3732513 * r3732514;
double r3732516 = b;
double r3732517 = r3732516 * r3732516;
double r3732518 = fma(r3732512, r3732515, r3732517);
double r3732519 = sqrt(r3732518);
double r3732520 = sqrt(r3732519);
double r3732521 = r3732515 * r3732512;
double r3732522 = fma(r3732516, r3732516, r3732521);
double r3732523 = sqrt(r3732522);
double r3732524 = sqrt(r3732523);
double r3732525 = -r3732516;
double r3732526 = fma(r3732520, r3732524, r3732525);
double r3732527 = cbrt(r3732526);
double r3732528 = cbrt(r3732527);
double r3732529 = r3732528 * r3732528;
double r3732530 = r3732528 * r3732529;
double r3732531 = r3732527 * r3732527;
double r3732532 = r3732530 * r3732531;
double r3732533 = 3.0;
double r3732534 = r3732513 * r3732533;
double r3732535 = r3732532 / r3732534;
return r3732535;
}



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
Taylor expanded around 0 44.1
Simplified44.0
rmApplied add-cube-cbrt44.0
rmApplied add-cube-cbrt44.0
Final simplification44.0
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)))