\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 \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}{3} \cdot \frac{\sqrt{\sqrt{b \cdot b - 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 r98965 = b;
double r98966 = -r98965;
double r98967 = r98965 * r98965;
double r98968 = 3.0;
double r98969 = a;
double r98970 = r98968 * r98969;
double r98971 = c;
double r98972 = r98970 * r98971;
double r98973 = r98967 - r98972;
double r98974 = sqrt(r98973);
double r98975 = r98966 + r98974;
double r98976 = r98975 / r98970;
return r98976;
}
double f(double a, double b, double c) {
double r98977 = b;
double r98978 = -3.124283374205192e+57;
bool r98979 = r98977 <= r98978;
double r98980 = 0.5;
double r98981 = c;
double r98982 = r98981 / r98977;
double r98983 = r98980 * r98982;
double r98984 = 0.6666666666666666;
double r98985 = a;
double r98986 = r98977 / r98985;
double r98987 = r98984 * r98986;
double r98988 = r98983 - r98987;
double r98989 = 3.84613441880261e-81;
bool r98990 = r98977 <= r98989;
double r98991 = r98977 * r98977;
double r98992 = 3.0;
double r98993 = r98985 * r98981;
double r98994 = r98992 * r98993;
double r98995 = r98991 - r98994;
double r98996 = sqrt(r98995);
double r98997 = r98996 - r98977;
double r98998 = sqrt(r98997);
double r98999 = r98998 / r98992;
double r99000 = r98998 / r98985;
double r99001 = r98999 * r99000;
double r99002 = -0.5;
double r99003 = r99002 * r98982;
double r99004 = r98990 ? r99001 : r99003;
double r99005 = r98979 ? r98988 : r99004;
return r99005;
}



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
Simplified12.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 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))