\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -1.347608436307838173759579035400211655706 \cdot 10^{126}:\\
\;\;\;\;\frac{\frac{a \cdot 1.5}{\frac{b}{c}} + -2 \cdot b}{3 \cdot a}\\
\mathbf{elif}\;b \le -1.917293071139976296336083936745225751817 \cdot 10^{-308}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{a}}{3}\\
\mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\
\;\;\;\;c \cdot \frac{1}{-\left(b + \sqrt{b \cdot b - \left(3 \cdot c\right) \cdot a}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{\frac{1}{3}}}{\frac{3}{c}}}{-\left(b \cdot 2 - 1.5 \cdot \frac{c \cdot a}{b}\right)}\\
\end{array}double f(double a, double b, double c) {
double r109216 = b;
double r109217 = -r109216;
double r109218 = r109216 * r109216;
double r109219 = 3.0;
double r109220 = a;
double r109221 = r109219 * r109220;
double r109222 = c;
double r109223 = r109221 * r109222;
double r109224 = r109218 - r109223;
double r109225 = sqrt(r109224);
double r109226 = r109217 + r109225;
double r109227 = r109226 / r109221;
return r109227;
}
double f(double a, double b, double c) {
double r109228 = b;
double r109229 = -1.3476084363078382e+126;
bool r109230 = r109228 <= r109229;
double r109231 = a;
double r109232 = 1.5;
double r109233 = r109231 * r109232;
double r109234 = c;
double r109235 = r109228 / r109234;
double r109236 = r109233 / r109235;
double r109237 = -2.0;
double r109238 = r109237 * r109228;
double r109239 = r109236 + r109238;
double r109240 = 3.0;
double r109241 = r109240 * r109231;
double r109242 = r109239 / r109241;
double r109243 = -1.9172930711399763e-308;
bool r109244 = r109228 <= r109243;
double r109245 = r109228 * r109228;
double r109246 = r109241 * r109234;
double r109247 = r109245 - r109246;
double r109248 = sqrt(r109247);
double r109249 = r109248 - r109228;
double r109250 = r109249 / r109231;
double r109251 = r109250 / r109240;
double r109252 = 3.628799960716312e+50;
bool r109253 = r109228 <= r109252;
double r109254 = 1.0;
double r109255 = r109240 * r109234;
double r109256 = r109255 * r109231;
double r109257 = r109245 - r109256;
double r109258 = sqrt(r109257);
double r109259 = r109228 + r109258;
double r109260 = -r109259;
double r109261 = r109254 / r109260;
double r109262 = r109234 * r109261;
double r109263 = r109254 / r109240;
double r109264 = r109254 / r109263;
double r109265 = r109240 / r109234;
double r109266 = r109264 / r109265;
double r109267 = 2.0;
double r109268 = r109228 * r109267;
double r109269 = r109234 * r109231;
double r109270 = r109269 / r109228;
double r109271 = r109232 * r109270;
double r109272 = r109268 - r109271;
double r109273 = -r109272;
double r109274 = r109266 / r109273;
double r109275 = r109253 ? r109262 : r109274;
double r109276 = r109244 ? r109251 : r109275;
double r109277 = r109230 ? r109242 : r109276;
return r109277;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3476084363078382e+126Initial program 53.0
Taylor expanded around -inf 9.6
Simplified2.7
if -1.3476084363078382e+126 < b < -1.9172930711399763e-308Initial program 8.7
Simplified8.8
if -1.9172930711399763e-308 < b < 3.628799960716312e+50Initial program 30.7
rmApplied flip-+30.7
Simplified16.7
Simplified16.7
rmApplied *-un-lft-identity16.7
Applied *-un-lft-identity16.7
Applied times-frac16.7
Applied associate-/l*16.8
Simplified9.9
rmApplied associate-*r/9.7
Applied associate-*l/9.6
Applied associate-/r/9.5
Simplified9.5
if 3.628799960716312e+50 < b Initial program 56.9
rmApplied flip-+56.9
Simplified29.4
Simplified29.4
rmApplied *-un-lft-identity29.4
Applied *-un-lft-identity29.4
Applied times-frac29.4
Applied associate-/l*29.5
Simplified26.5
rmApplied div-inv26.5
Simplified26.2
Taylor expanded around inf 7.7
Simplified7.7
Final simplification7.9
herbie shell --seed 2019179
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))