\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 -7.397994825724217 \cdot 10^{+150}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a}{\frac{b}{c}}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\
\mathbf{elif}\;b \le 3.80416111172822 \cdot 10^{-128}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot -3, c, b \cdot b\right)} - b}{3}}{a}\\
\mathbf{elif}\;b \le 3.633198732680569 \cdot 10^{-37}:\\
\;\;\;\;\frac{\frac{\frac{c}{\sqrt[3]{\sqrt{\mathsf{fma}\left(a \cdot -3, c, b \cdot b\right)} + b}} \cdot \frac{a \cdot -3}{\sqrt[3]{\sqrt{\mathsf{fma}\left(a \cdot -3, c, b \cdot b\right)} + b}}}{\sqrt[3]{\sqrt{\mathsf{fma}\left(a \cdot -3, c, b \cdot b\right)} + b}}}{a \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\
\end{array}double f(double a, double b, double c) {
double r4323032 = b;
double r4323033 = -r4323032;
double r4323034 = r4323032 * r4323032;
double r4323035 = 3.0;
double r4323036 = a;
double r4323037 = r4323035 * r4323036;
double r4323038 = c;
double r4323039 = r4323037 * r4323038;
double r4323040 = r4323034 - r4323039;
double r4323041 = sqrt(r4323040);
double r4323042 = r4323033 + r4323041;
double r4323043 = r4323042 / r4323037;
return r4323043;
}
double f(double a, double b, double c) {
double r4323044 = b;
double r4323045 = -7.397994825724217e+150;
bool r4323046 = r4323044 <= r4323045;
double r4323047 = a;
double r4323048 = c;
double r4323049 = r4323044 / r4323048;
double r4323050 = r4323047 / r4323049;
double r4323051 = 1.5;
double r4323052 = -2.0;
double r4323053 = r4323044 * r4323052;
double r4323054 = fma(r4323050, r4323051, r4323053);
double r4323055 = 3.0;
double r4323056 = r4323047 * r4323055;
double r4323057 = r4323054 / r4323056;
double r4323058 = 3.80416111172822e-128;
bool r4323059 = r4323044 <= r4323058;
double r4323060 = -3.0;
double r4323061 = r4323047 * r4323060;
double r4323062 = r4323044 * r4323044;
double r4323063 = fma(r4323061, r4323048, r4323062);
double r4323064 = sqrt(r4323063);
double r4323065 = r4323064 - r4323044;
double r4323066 = r4323065 / r4323055;
double r4323067 = r4323066 / r4323047;
double r4323068 = 3.633198732680569e-37;
bool r4323069 = r4323044 <= r4323068;
double r4323070 = r4323064 + r4323044;
double r4323071 = cbrt(r4323070);
double r4323072 = r4323048 / r4323071;
double r4323073 = r4323061 / r4323071;
double r4323074 = r4323072 * r4323073;
double r4323075 = r4323074 / r4323071;
double r4323076 = r4323075 / r4323056;
double r4323077 = r4323048 / r4323044;
double r4323078 = -0.5;
double r4323079 = r4323077 * r4323078;
double r4323080 = r4323069 ? r4323076 : r4323079;
double r4323081 = r4323059 ? r4323067 : r4323080;
double r4323082 = r4323046 ? r4323057 : r4323081;
return r4323082;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -7.397994825724217e+150Initial program 59.1
Taylor expanded around -inf 11.5
Simplified2.5
if -7.397994825724217e+150 < b < 3.80416111172822e-128Initial program 10.8
rmApplied associate-/r*10.8
Simplified10.8
if 3.80416111172822e-128 < b < 3.633198732680569e-37Initial program 32.1
rmApplied associate-/r*32.1
Simplified32.1
rmApplied associate-/l/32.1
rmApplied flip--32.2
Simplified17.2
rmApplied add-cube-cbrt18.0
Applied associate-/r*18.0
Simplified14.4
if 3.633198732680569e-37 < b Initial program 54.1
Taylor expanded around inf 7.8
Final simplification9.0
herbie shell --seed 2019162 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))