\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.353991234940779297203184553281909673632 \cdot 10^{154}:\\
\;\;\;\;\frac{\frac{\left(-3\right) \cdot \frac{a}{\frac{\frac{c}{\frac{b}{a}} \cdot 1.5}{c}}}{3}}{a}\\
\mathbf{elif}\;b \le 9.662302160771726600156812322790415706371 \cdot 10^{-283}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, 3 \cdot \left(-c \cdot a\right)\right)}}{a}}{3} - \frac{\frac{b}{3}}{a}\\
\mathbf{elif}\;b \le 8.3141423072673972643504834464895879574 \cdot 10^{76}:\\
\;\;\;\;\frac{\frac{3}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{-a}{\frac{b + \sqrt{\mathsf{fma}\left(c \cdot a, -3, {b}^{2}\right)}}{c} \cdot \left(\sqrt[3]{a} \cdot \sqrt[3]{3}\right)}\\
\mathbf{else}:\\
\;\;\;\;-\frac{\frac{\frac{a}{\frac{2 \cdot b - \frac{c}{\frac{b}{a}} \cdot 1.5}{c}} \cdot 3}{3}}{a}\\
\end{array}double f(double a, double b, double c) {
double r124081 = b;
double r124082 = -r124081;
double r124083 = r124081 * r124081;
double r124084 = 3.0;
double r124085 = a;
double r124086 = r124084 * r124085;
double r124087 = c;
double r124088 = r124086 * r124087;
double r124089 = r124083 - r124088;
double r124090 = sqrt(r124089);
double r124091 = r124082 + r124090;
double r124092 = r124091 / r124086;
return r124092;
}
double f(double a, double b, double c) {
double r124093 = b;
double r124094 = -1.3539912349407793e+154;
bool r124095 = r124093 <= r124094;
double r124096 = 3.0;
double r124097 = -r124096;
double r124098 = a;
double r124099 = c;
double r124100 = r124093 / r124098;
double r124101 = r124099 / r124100;
double r124102 = 1.5;
double r124103 = r124101 * r124102;
double r124104 = r124103 / r124099;
double r124105 = r124098 / r124104;
double r124106 = r124097 * r124105;
double r124107 = r124106 / r124096;
double r124108 = r124107 / r124098;
double r124109 = 9.662302160771727e-283;
bool r124110 = r124093 <= r124109;
double r124111 = r124099 * r124098;
double r124112 = -r124111;
double r124113 = r124096 * r124112;
double r124114 = fma(r124093, r124093, r124113);
double r124115 = sqrt(r124114);
double r124116 = r124115 / r124098;
double r124117 = r124116 / r124096;
double r124118 = r124093 / r124096;
double r124119 = r124118 / r124098;
double r124120 = r124117 - r124119;
double r124121 = 8.314142307267397e+76;
bool r124122 = r124093 <= r124121;
double r124123 = cbrt(r124096);
double r124124 = r124123 * r124123;
double r124125 = r124096 / r124124;
double r124126 = cbrt(r124098);
double r124127 = r124126 * r124126;
double r124128 = r124125 / r124127;
double r124129 = -r124098;
double r124130 = 2.0;
double r124131 = pow(r124093, r124130);
double r124132 = fma(r124111, r124097, r124131);
double r124133 = sqrt(r124132);
double r124134 = r124093 + r124133;
double r124135 = r124134 / r124099;
double r124136 = r124126 * r124123;
double r124137 = r124135 * r124136;
double r124138 = r124129 / r124137;
double r124139 = r124128 * r124138;
double r124140 = r124130 * r124093;
double r124141 = r124140 - r124103;
double r124142 = r124141 / r124099;
double r124143 = r124098 / r124142;
double r124144 = r124143 * r124096;
double r124145 = r124144 / r124096;
double r124146 = r124145 / r124098;
double r124147 = -r124146;
double r124148 = r124122 ? r124139 : r124147;
double r124149 = r124110 ? r124120 : r124148;
double r124150 = r124095 ? r124108 : r124149;
return r124150;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3539912349407793e+154Initial program 64.0
Simplified64.0
rmApplied flip--64.0
Simplified62.7
Simplified62.7
rmApplied associate-/r*62.7
Simplified62.7
rmApplied *-un-lft-identity62.7
Applied distribute-lft-neg-in62.7
Applied times-frac62.7
Simplified62.7
Simplified62.5
Taylor expanded around -inf 24.7
Simplified16.4
if -1.3539912349407793e+154 < b < 9.662302160771727e-283Initial program 9.5
Simplified9.5
rmApplied div-sub9.5
Simplified9.5
Simplified9.5
if 9.662302160771727e-283 < b < 8.314142307267397e+76Initial program 32.4
Simplified32.4
rmApplied flip--32.4
Simplified17.1
Simplified17.1
rmApplied associate-/r*17.0
Simplified17.0
rmApplied *-un-lft-identity17.0
Applied distribute-lft-neg-in17.0
Applied times-frac17.0
Simplified17.0
Simplified14.5
rmApplied add-cube-cbrt15.1
Applied add-cube-cbrt15.1
Applied times-frac15.2
Applied times-frac15.2
Simplified15.2
Simplified16.0
if 8.314142307267397e+76 < b Initial program 58.5
Simplified58.5
rmApplied flip--58.5
Simplified30.5
Simplified30.5
rmApplied associate-/r*30.5
Simplified30.5
rmApplied *-un-lft-identity30.5
Applied distribute-lft-neg-in30.5
Applied times-frac30.5
Simplified30.5
Simplified30.4
Taylor expanded around inf 15.2
Simplified11.4
Final simplification12.5
herbie shell --seed 2019196 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))