\begin{array}{l}
\mathbf{if}\;b \ge 0.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.120083830114914597173316368847253992683 \cdot 10^{100}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\left(4 \cdot a\right) \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - b\right) - b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.391022219120490870209261122719458055916 \cdot 10^{74}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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}{\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}} - b}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}double f(double a, double b, double c) {
double r38183 = b;
double r38184 = 0.0;
bool r38185 = r38183 >= r38184;
double r38186 = -r38183;
double r38187 = r38183 * r38183;
double r38188 = 4.0;
double r38189 = a;
double r38190 = r38188 * r38189;
double r38191 = c;
double r38192 = r38190 * r38191;
double r38193 = r38187 - r38192;
double r38194 = sqrt(r38193);
double r38195 = r38186 - r38194;
double r38196 = 2.0;
double r38197 = r38196 * r38189;
double r38198 = r38195 / r38197;
double r38199 = r38196 * r38191;
double r38200 = r38186 + r38194;
double r38201 = r38199 / r38200;
double r38202 = r38185 ? r38198 : r38201;
return r38202;
}
double f(double a, double b, double c) {
double r38203 = b;
double r38204 = -1.1200838301149146e+100;
bool r38205 = r38203 <= r38204;
double r38206 = 0.0;
bool r38207 = r38203 >= r38206;
double r38208 = 4.0;
double r38209 = a;
double r38210 = r38208 * r38209;
double r38211 = c;
double r38212 = r38210 * r38211;
double r38213 = r38203 * r38203;
double r38214 = r38213 - r38212;
double r38215 = sqrt(r38214);
double r38216 = r38215 - r38203;
double r38217 = r38212 / r38216;
double r38218 = 2.0;
double r38219 = r38218 * r38209;
double r38220 = r38217 / r38219;
double r38221 = r38218 * r38211;
double r38222 = cbrt(r38203);
double r38223 = r38222 * r38222;
double r38224 = r38209 / r38223;
double r38225 = r38211 / r38222;
double r38226 = r38224 * r38225;
double r38227 = r38218 * r38226;
double r38228 = r38227 - r38203;
double r38229 = r38228 - r38203;
double r38230 = r38221 / r38229;
double r38231 = r38207 ? r38220 : r38230;
double r38232 = 1.3910222191204909e+74;
bool r38233 = r38203 <= r38232;
double r38234 = -r38203;
double r38235 = r38234 - r38215;
double r38236 = r38235 / r38219;
double r38237 = sqrt(r38215);
double r38238 = r38237 * r38237;
double r38239 = r38238 - r38203;
double r38240 = r38221 / r38239;
double r38241 = r38207 ? r38236 : r38240;
double r38242 = r38209 * r38211;
double r38243 = r38242 / r38203;
double r38244 = r38218 * r38243;
double r38245 = r38203 - r38244;
double r38246 = r38234 - r38245;
double r38247 = r38246 / r38219;
double r38248 = r38221 / r38216;
double r38249 = r38207 ? r38247 : r38248;
double r38250 = r38233 ? r38241 : r38249;
double r38251 = r38205 ? r38231 : r38250;
return r38251;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.1200838301149146e+100Initial program 30.1
Simplified30.1
Taylor expanded around -inf 6.3
rmApplied add-cube-cbrt6.3
Applied times-frac2.6
rmApplied flip--2.6
Simplified2.6
Simplified2.6
if -1.1200838301149146e+100 < b < 1.3910222191204909e+74Initial program 8.9
Simplified8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
if 1.3910222191204909e+74 < b Initial program 41.7
Simplified41.7
Taylor expanded around inf 12.2
Final simplification8.1
herbie shell --seed 2019322
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))