\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.863586216911641212364712822159363355467 \cdot 10^{149}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.247674408016049917369388152074686750261 \cdot 10^{-286}:\\
\;\;\;\;\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(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \le 1.378005060912798054619094197125559984271 \cdot 10^{90}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r37240 = b;
double r37241 = 0.0;
bool r37242 = r37240 >= r37241;
double r37243 = -r37240;
double r37244 = r37240 * r37240;
double r37245 = 4.0;
double r37246 = a;
double r37247 = r37245 * r37246;
double r37248 = c;
double r37249 = r37247 * r37248;
double r37250 = r37244 - r37249;
double r37251 = sqrt(r37250);
double r37252 = r37243 - r37251;
double r37253 = 2.0;
double r37254 = r37253 * r37246;
double r37255 = r37252 / r37254;
double r37256 = r37253 * r37248;
double r37257 = r37243 + r37251;
double r37258 = r37256 / r37257;
double r37259 = r37242 ? r37255 : r37258;
return r37259;
}
double f(double a, double b, double c) {
double r37260 = b;
double r37261 = -1.8635862169116412e+149;
bool r37262 = r37260 <= r37261;
double r37263 = 0.0;
bool r37264 = r37260 >= r37263;
double r37265 = -r37260;
double r37266 = r37260 * r37260;
double r37267 = 4.0;
double r37268 = a;
double r37269 = r37267 * r37268;
double r37270 = c;
double r37271 = r37269 * r37270;
double r37272 = r37266 - r37271;
double r37273 = sqrt(r37272);
double r37274 = r37265 - r37273;
double r37275 = 2.0;
double r37276 = r37275 * r37268;
double r37277 = r37274 / r37276;
double r37278 = r37275 * r37270;
double r37279 = r37268 * r37270;
double r37280 = r37279 / r37260;
double r37281 = r37275 * r37280;
double r37282 = 2.0;
double r37283 = r37282 * r37260;
double r37284 = r37281 - r37283;
double r37285 = r37278 / r37284;
double r37286 = r37264 ? r37277 : r37285;
double r37287 = 1.24767440801605e-286;
bool r37288 = r37260 <= r37287;
double r37289 = r37273 - r37260;
double r37290 = r37271 / r37289;
double r37291 = r37290 / r37276;
double r37292 = r37265 + r37273;
double r37293 = r37278 / r37292;
double r37294 = r37264 ? r37291 : r37293;
double r37295 = 1.378005060912798e+90;
bool r37296 = r37260 <= r37295;
double r37297 = 1.0;
double r37298 = r37270 / r37260;
double r37299 = r37260 / r37268;
double r37300 = r37298 - r37299;
double r37301 = r37297 * r37300;
double r37302 = -2.0;
double r37303 = r37302 * r37298;
double r37304 = r37264 ? r37301 : r37303;
double r37305 = r37296 ? r37286 : r37304;
double r37306 = r37288 ? r37294 : r37305;
double r37307 = r37262 ? r37286 : r37306;
return r37307;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.8635862169116412e+149 or 1.24767440801605e-286 < b < 1.378005060912798e+90Initial program 20.3
Taylor expanded around -inf 8.0
if -1.8635862169116412e+149 < b < 1.24767440801605e-286Initial program 8.5
rmApplied flip--8.6
Simplified8.6
Simplified8.6
if 1.378005060912798e+90 < b Initial program 45.5
Taylor expanded around inf 10.3
Taylor expanded around 0 4.2
Simplified4.2
Taylor expanded around -inf 4.2
Final simplification7.6
herbie shell --seed 2019354
(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)))))))