\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.2809012426367427 \cdot 10^{+146}:\\
\;\;\;\;\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(c \cdot \frac{a}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.348314717715737 \cdot 10^{+125}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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{c}{\frac{b}{a}} - 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 r487185 = b;
double r487186 = 0.0;
bool r487187 = r487185 >= r487186;
double r487188 = -r487185;
double r487189 = r487185 * r487185;
double r487190 = 4.0;
double r487191 = a;
double r487192 = r487190 * r487191;
double r487193 = c;
double r487194 = r487192 * r487193;
double r487195 = r487189 - r487194;
double r487196 = sqrt(r487195);
double r487197 = r487188 - r487196;
double r487198 = 2.0;
double r487199 = r487198 * r487191;
double r487200 = r487197 / r487199;
double r487201 = r487198 * r487193;
double r487202 = r487188 + r487196;
double r487203 = r487201 / r487202;
double r487204 = r487187 ? r487200 : r487203;
return r487204;
}
double f(double a, double b, double c) {
double r487205 = b;
double r487206 = -1.2809012426367427e+146;
bool r487207 = r487205 <= r487206;
double r487208 = 0.0;
bool r487209 = r487205 >= r487208;
double r487210 = -r487205;
double r487211 = r487205 * r487205;
double r487212 = 4.0;
double r487213 = a;
double r487214 = r487212 * r487213;
double r487215 = c;
double r487216 = r487214 * r487215;
double r487217 = r487211 - r487216;
double r487218 = sqrt(r487217);
double r487219 = r487210 - r487218;
double r487220 = 2.0;
double r487221 = r487220 * r487213;
double r487222 = r487219 / r487221;
double r487223 = r487215 * r487220;
double r487224 = r487213 / r487205;
double r487225 = r487215 * r487224;
double r487226 = r487225 - r487205;
double r487227 = r487220 * r487226;
double r487228 = r487223 / r487227;
double r487229 = r487209 ? r487222 : r487228;
double r487230 = 3.348314717715737e+125;
bool r487231 = r487205 <= r487230;
double r487232 = sqrt(r487218);
double r487233 = r487232 * r487232;
double r487234 = r487210 - r487233;
double r487235 = r487234 / r487221;
double r487236 = r487218 + r487210;
double r487237 = r487223 / r487236;
double r487238 = r487209 ? r487235 : r487237;
double r487239 = r487205 / r487213;
double r487240 = r487215 / r487239;
double r487241 = r487240 - r487205;
double r487242 = r487220 * r487241;
double r487243 = r487242 / r487221;
double r487244 = r487209 ? r487243 : r487237;
double r487245 = r487231 ? r487238 : r487244;
double r487246 = r487207 ? r487229 : r487245;
return r487246;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.2809012426367427e+146Initial program 36.7
rmApplied add-sqr-sqrt36.7
Applied sqrt-prod36.7
Taylor expanded around -inf 7.2
Simplified2.0
if -1.2809012426367427e+146 < b < 3.348314717715737e+125Initial program 8.1
rmApplied add-sqr-sqrt8.3
if 3.348314717715737e+125 < b Initial program 50.7
Taylor expanded around inf 10.6
Simplified3.2
Final simplification6.4
herbie shell --seed 2019129
(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)))))))