\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 -3.12428337420519208 \cdot 10^{57}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 3.84613441880260993 \cdot 10^{-81}:\\
\;\;\;\;\frac{\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b}}{3} \cdot \frac{\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b}}{a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r179304 = b;
double r179305 = -r179304;
double r179306 = r179304 * r179304;
double r179307 = 3.0;
double r179308 = a;
double r179309 = r179307 * r179308;
double r179310 = c;
double r179311 = r179309 * r179310;
double r179312 = r179306 - r179311;
double r179313 = sqrt(r179312);
double r179314 = r179305 + r179313;
double r179315 = r179314 / r179309;
return r179315;
}
double f(double a, double b, double c) {
double r179316 = b;
double r179317 = -3.124283374205192e+57;
bool r179318 = r179316 <= r179317;
double r179319 = 0.5;
double r179320 = c;
double r179321 = r179320 / r179316;
double r179322 = r179319 * r179321;
double r179323 = 0.6666666666666666;
double r179324 = a;
double r179325 = r179316 / r179324;
double r179326 = r179323 * r179325;
double r179327 = r179322 - r179326;
double r179328 = 3.84613441880261e-81;
bool r179329 = r179316 <= r179328;
double r179330 = 2.0;
double r179331 = pow(r179316, r179330);
double r179332 = 3.0;
double r179333 = r179324 * r179320;
double r179334 = r179332 * r179333;
double r179335 = r179331 - r179334;
double r179336 = sqrt(r179335);
double r179337 = r179336 - r179316;
double r179338 = sqrt(r179337);
double r179339 = r179338 / r179332;
double r179340 = r179338 / r179324;
double r179341 = r179339 * r179340;
double r179342 = -0.5;
double r179343 = r179342 * r179321;
double r179344 = r179329 ? r179341 : r179343;
double r179345 = r179318 ? r179327 : r179344;
return r179345;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.124283374205192e+57Initial program 39.6
Simplified39.6
Taylor expanded around -inf 5.7
if -3.124283374205192e+57 < b < 3.84613441880261e-81Initial program 12.8
Simplified12.8
Taylor expanded around 0 12.9
rmApplied add-sqr-sqrt13.2
Applied times-frac13.1
if 3.84613441880261e-81 < b Initial program 53.0
Simplified53.0
Taylor expanded around inf 9.5
Final simplification10.3
herbie shell --seed 2020045
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))