\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.33791852996056488 \cdot 10^{154}:\\
\;\;\;\;\frac{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.38190037300826793 \cdot 10^{-133}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\
\mathbf{elif}\;b \le 6.7711658147871089 \cdot 10^{125}:\\
\;\;\;\;\frac{1}{\frac{3 \cdot a}{3 \cdot \left(a \cdot c\right)} \cdot \left(\left(-b\right) - \sqrt{b \cdot b + \left(0 - 3 \cdot \left(a \cdot c\right)\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r118993 = b;
double r118994 = -r118993;
double r118995 = r118993 * r118993;
double r118996 = 3.0;
double r118997 = a;
double r118998 = r118996 * r118997;
double r118999 = c;
double r119000 = r118998 * r118999;
double r119001 = r118995 - r119000;
double r119002 = sqrt(r119001);
double r119003 = r118994 + r119002;
double r119004 = r119003 / r118998;
return r119004;
}
double f(double a, double b, double c) {
double r119005 = b;
double r119006 = -1.3379185299605649e+154;
bool r119007 = r119005 <= r119006;
double r119008 = -r119005;
double r119009 = 1.5;
double r119010 = a;
double r119011 = c;
double r119012 = r119010 * r119011;
double r119013 = r119012 / r119005;
double r119014 = r119009 * r119013;
double r119015 = r119014 - r119005;
double r119016 = r119008 + r119015;
double r119017 = 3.0;
double r119018 = r119017 * r119010;
double r119019 = r119016 / r119018;
double r119020 = 1.381900373008268e-133;
bool r119021 = r119005 <= r119020;
double r119022 = r119005 * r119005;
double r119023 = r119018 * r119011;
double r119024 = r119022 - r119023;
double r119025 = sqrt(r119024);
double r119026 = r119008 + r119025;
double r119027 = r119026 / r119018;
double r119028 = 6.771165814787109e+125;
bool r119029 = r119005 <= r119028;
double r119030 = 1.0;
double r119031 = r119017 * r119012;
double r119032 = r119018 / r119031;
double r119033 = 0.0;
double r119034 = r119033 - r119031;
double r119035 = r119022 + r119034;
double r119036 = sqrt(r119035);
double r119037 = r119008 - r119036;
double r119038 = r119032 * r119037;
double r119039 = r119030 / r119038;
double r119040 = -1.5;
double r119041 = r119040 * r119013;
double r119042 = r119041 / r119018;
double r119043 = r119029 ? r119039 : r119042;
double r119044 = r119021 ? r119027 : r119043;
double r119045 = r119007 ? r119019 : r119044;
return r119045;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3379185299605649e+154Initial program 64.0
Taylor expanded around -inf 11.6
if -1.3379185299605649e+154 < b < 1.381900373008268e-133Initial program 11.6
if 1.381900373008268e-133 < b < 6.771165814787109e+125Initial program 41.5
rmApplied flip-+41.5
Simplified15.5
rmApplied sub-neg15.5
Simplified15.5
rmApplied clear-num15.7
Simplified13.8
if 6.771165814787109e+125 < b Initial program 61.6
Taylor expanded around inf 12.9
Final simplification12.4
herbie shell --seed 2020083
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))