\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.340453357951692868039545417802281002798 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.269665110513950885787223322334260534415 \cdot 10^{61}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{\frac{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}}}{\sqrt[3]{\sqrt[3]{b}} \cdot \sqrt[3]{\sqrt[3]{b}}}}{\sqrt[3]{\sqrt[3]{\sqrt[3]{b}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{b}}}} \cdot \frac{c}{\sqrt[3]{\sqrt[3]{\sqrt[3]{b}}}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r38151 = b;
double r38152 = 0.0;
bool r38153 = r38151 >= r38152;
double r38154 = 2.0;
double r38155 = c;
double r38156 = r38154 * r38155;
double r38157 = -r38151;
double r38158 = r38151 * r38151;
double r38159 = 4.0;
double r38160 = a;
double r38161 = r38159 * r38160;
double r38162 = r38161 * r38155;
double r38163 = r38158 - r38162;
double r38164 = sqrt(r38163);
double r38165 = r38157 - r38164;
double r38166 = r38156 / r38165;
double r38167 = r38157 + r38164;
double r38168 = r38154 * r38160;
double r38169 = r38167 / r38168;
double r38170 = r38153 ? r38166 : r38169;
return r38170;
}
double f(double a, double b, double c) {
double r38171 = b;
double r38172 = -1.3404533579516929e+154;
bool r38173 = r38171 <= r38172;
double r38174 = 0.0;
bool r38175 = r38171 >= r38174;
double r38176 = 2.0;
double r38177 = c;
double r38178 = r38176 * r38177;
double r38179 = -r38171;
double r38180 = a;
double r38181 = cbrt(r38171);
double r38182 = r38181 * r38181;
double r38183 = r38180 / r38182;
double r38184 = r38177 / r38181;
double r38185 = r38183 * r38184;
double r38186 = r38176 * r38185;
double r38187 = r38171 - r38186;
double r38188 = r38179 - r38187;
double r38189 = r38178 / r38188;
double r38190 = r38180 * r38177;
double r38191 = r38190 / r38171;
double r38192 = r38176 * r38191;
double r38193 = 2.0;
double r38194 = r38193 * r38171;
double r38195 = r38192 - r38194;
double r38196 = r38176 * r38180;
double r38197 = r38195 / r38196;
double r38198 = r38175 ? r38189 : r38197;
double r38199 = 2.269665110513951e+61;
bool r38200 = r38171 <= r38199;
double r38201 = r38171 * r38171;
double r38202 = 4.0;
double r38203 = r38202 * r38180;
double r38204 = r38203 * r38177;
double r38205 = r38201 - r38204;
double r38206 = cbrt(r38205);
double r38207 = fabs(r38206);
double r38208 = sqrt(r38206);
double r38209 = r38207 * r38208;
double r38210 = r38179 - r38209;
double r38211 = r38178 / r38210;
double r38212 = sqrt(r38205);
double r38213 = r38179 + r38212;
double r38214 = r38213 / r38196;
double r38215 = r38175 ? r38211 : r38214;
double r38216 = cbrt(r38181);
double r38217 = r38216 * r38216;
double r38218 = r38183 / r38217;
double r38219 = cbrt(r38216);
double r38220 = r38219 * r38219;
double r38221 = r38218 / r38220;
double r38222 = r38177 / r38219;
double r38223 = r38221 * r38222;
double r38224 = r38176 * r38223;
double r38225 = r38171 - r38224;
double r38226 = r38179 - r38225;
double r38227 = r38178 / r38226;
double r38228 = r38175 ? r38227 : r38214;
double r38229 = r38200 ? r38215 : r38228;
double r38230 = r38173 ? r38198 : r38229;
return r38230;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3404533579516929e+154Initial program 64.0
Taylor expanded around inf 64.0
rmApplied add-cube-cbrt64.0
Applied times-frac64.0
Taylor expanded around -inf 11.2
if -1.3404533579516929e+154 < b < 2.269665110513951e+61Initial program 9.0
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
Simplified9.2
if 2.269665110513951e+61 < b Initial program 26.3
Taylor expanded around inf 7.2
rmApplied add-cube-cbrt7.2
Applied times-frac3.9
rmApplied add-cube-cbrt3.9
Applied *-un-lft-identity3.9
Applied times-frac3.9
Applied associate-*r*3.9
Simplified3.9
rmApplied add-cube-cbrt3.9
Applied *-un-lft-identity3.9
Applied times-frac3.9
Applied associate-*r*3.9
Simplified3.9
Final simplification7.9
herbie shell --seed 2019304
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))