\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.3282248930815427 \cdot 10^{+154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(\frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.4243727332802643 \cdot 10^{+80}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1318195 = b;
double r1318196 = 0.0;
bool r1318197 = r1318195 >= r1318196;
double r1318198 = -r1318195;
double r1318199 = r1318195 * r1318195;
double r1318200 = 4.0;
double r1318201 = a;
double r1318202 = r1318200 * r1318201;
double r1318203 = c;
double r1318204 = r1318202 * r1318203;
double r1318205 = r1318199 - r1318204;
double r1318206 = sqrt(r1318205);
double r1318207 = r1318198 - r1318206;
double r1318208 = 2.0;
double r1318209 = r1318208 * r1318201;
double r1318210 = r1318207 / r1318209;
double r1318211 = r1318208 * r1318203;
double r1318212 = r1318198 + r1318206;
double r1318213 = r1318211 / r1318212;
double r1318214 = r1318197 ? r1318210 : r1318213;
return r1318214;
}
double f(double a, double b, double c) {
double r1318215 = b;
double r1318216 = -1.3282248930815427e+154;
bool r1318217 = r1318215 <= r1318216;
double r1318218 = 0.0;
bool r1318219 = r1318215 >= r1318218;
double r1318220 = -r1318215;
double r1318221 = r1318215 * r1318215;
double r1318222 = 4.0;
double r1318223 = a;
double r1318224 = r1318222 * r1318223;
double r1318225 = c;
double r1318226 = r1318224 * r1318225;
double r1318227 = r1318221 - r1318226;
double r1318228 = sqrt(r1318227);
double r1318229 = r1318220 - r1318228;
double r1318230 = 2.0;
double r1318231 = r1318230 * r1318223;
double r1318232 = r1318229 / r1318231;
double r1318233 = r1318225 * r1318230;
double r1318234 = r1318223 * r1318225;
double r1318235 = r1318234 / r1318215;
double r1318236 = r1318235 - r1318215;
double r1318237 = r1318230 * r1318236;
double r1318238 = r1318233 / r1318237;
double r1318239 = r1318219 ? r1318232 : r1318238;
double r1318240 = 3.4243727332802643e+80;
bool r1318241 = r1318215 <= r1318240;
double r1318242 = cbrt(r1318227);
double r1318243 = r1318242 * r1318242;
double r1318244 = sqrt(r1318243);
double r1318245 = cbrt(r1318228);
double r1318246 = r1318245 * r1318245;
double r1318247 = sqrt(r1318246);
double r1318248 = r1318244 * r1318247;
double r1318249 = r1318220 - r1318248;
double r1318250 = r1318249 / r1318231;
double r1318251 = r1318228 + r1318220;
double r1318252 = r1318233 / r1318251;
double r1318253 = r1318219 ? r1318250 : r1318252;
double r1318254 = r1318237 / r1318231;
double r1318255 = r1318219 ? r1318254 : r1318252;
double r1318256 = r1318241 ? r1318253 : r1318255;
double r1318257 = r1318217 ? r1318239 : r1318256;
return r1318257;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3282248930815427e+154Initial program 37.5
Taylor expanded around -inf 5.8
Simplified5.8
if -1.3282248930815427e+154 < b < 3.4243727332802643e+80Initial program 9.1
rmApplied add-cube-cbrt9.3
Applied sqrt-prod9.3
rmApplied add-sqr-sqrt9.3
Applied cbrt-prod9.3
if 3.4243727332802643e+80 < b Initial program 42.0
Taylor expanded around inf 9.6
Simplified9.6
Final simplification8.7
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))