\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.139975678520567663603045399522192354667 \cdot 10^{154}:\\
\;\;\;\;\frac{\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3}}{a}\\
\mathbf{elif}\;b \le -3.147780135831067691283932115788099034227 \cdot 10^{-262}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\
\mathbf{elif}\;b \le 2.048582467390676806206106891122023768278 \cdot 10^{118}:\\
\;\;\;\;\frac{\frac{\frac{a}{\frac{\sqrt{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}}{3}}}{\frac{\sqrt{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}}{c}}}{3} \cdot \frac{-1}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{-\left(3 \cdot a\right) \cdot c}{\left(b - 1.5 \cdot \frac{a \cdot c}{b}\right) + b}}{3}}{a}\\
\end{array}double f(double a, double b, double c) {
double r113036 = b;
double r113037 = -r113036;
double r113038 = r113036 * r113036;
double r113039 = 3.0;
double r113040 = a;
double r113041 = r113039 * r113040;
double r113042 = c;
double r113043 = r113041 * r113042;
double r113044 = r113038 - r113043;
double r113045 = sqrt(r113044);
double r113046 = r113037 + r113045;
double r113047 = r113046 / r113041;
return r113047;
}
double f(double a, double b, double c) {
double r113048 = b;
double r113049 = -1.1399756785205677e+154;
bool r113050 = r113048 <= r113049;
double r113051 = 1.5;
double r113052 = a;
double r113053 = c;
double r113054 = r113052 * r113053;
double r113055 = r113054 / r113048;
double r113056 = r113051 * r113055;
double r113057 = 2.0;
double r113058 = r113057 * r113048;
double r113059 = r113056 - r113058;
double r113060 = 3.0;
double r113061 = r113059 / r113060;
double r113062 = r113061 / r113052;
double r113063 = -3.1477801358310677e-262;
bool r113064 = r113048 <= r113063;
double r113065 = -r113048;
double r113066 = r113048 * r113048;
double r113067 = r113060 * r113052;
double r113068 = r113067 * r113053;
double r113069 = r113066 - r113068;
double r113070 = sqrt(r113069);
double r113071 = r113065 + r113070;
double r113072 = r113071 / r113067;
double r113073 = 2.048582467390677e+118;
bool r113074 = r113048 <= r113073;
double r113075 = r113070 + r113048;
double r113076 = sqrt(r113075);
double r113077 = r113076 / r113060;
double r113078 = r113052 / r113077;
double r113079 = r113076 / r113053;
double r113080 = r113078 / r113079;
double r113081 = r113080 / r113060;
double r113082 = -1.0;
double r113083 = r113082 / r113052;
double r113084 = r113081 * r113083;
double r113085 = -r113068;
double r113086 = r113048 - r113056;
double r113087 = r113086 + r113048;
double r113088 = r113085 / r113087;
double r113089 = r113088 / r113060;
double r113090 = r113089 / r113052;
double r113091 = r113074 ? r113084 : r113090;
double r113092 = r113064 ? r113072 : r113091;
double r113093 = r113050 ? r113062 : r113092;
return r113093;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.1399756785205677e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.3
if -1.1399756785205677e+154 < b < -3.1477801358310677e-262Initial program 7.4
if -3.1477801358310677e-262 < b < 2.048582467390677e+118Initial program 32.3
Simplified32.4
rmApplied flip--32.4
Simplified16.7
rmApplied div-sub16.7
Simplified16.7
Simplified14.7
rmApplied div-inv14.7
rmApplied *-un-lft-identity14.7
Applied add-sqr-sqrt14.8
Applied times-frac14.8
Applied associate-/r*15.1
Simplified15.1
if 2.048582467390677e+118 < b Initial program 60.6
Simplified60.6
rmApplied flip--60.6
Simplified34.2
Taylor expanded around inf 14.3
Final simplification12.0
herbie shell --seed 2019325
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))