\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.325654668456179099457649326767525795016 \cdot 10^{154}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.247674408016049917369388152074686750261 \cdot 10^{-286}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(b, b, -\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right)\right)}{\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}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\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 r57277 = b;
double r57278 = 0.0;
bool r57279 = r57277 >= r57278;
double r57280 = -r57277;
double r57281 = r57277 * r57277;
double r57282 = 4.0;
double r57283 = a;
double r57284 = r57282 * r57283;
double r57285 = c;
double r57286 = r57284 * r57285;
double r57287 = r57281 - r57286;
double r57288 = sqrt(r57287);
double r57289 = r57280 - r57288;
double r57290 = 2.0;
double r57291 = r57290 * r57283;
double r57292 = r57289 / r57291;
double r57293 = r57290 * r57285;
double r57294 = r57280 + r57288;
double r57295 = r57293 / r57294;
double r57296 = r57279 ? r57292 : r57295;
return r57296;
}
double f(double a, double b, double c) {
double r57297 = b;
double r57298 = -1.3256546684561791e+154;
bool r57299 = r57297 <= r57298;
double r57300 = 0.0;
bool r57301 = r57297 >= r57300;
double r57302 = -r57297;
double r57303 = r57297 * r57297;
double r57304 = 4.0;
double r57305 = a;
double r57306 = r57304 * r57305;
double r57307 = c;
double r57308 = r57306 * r57307;
double r57309 = r57303 - r57308;
double r57310 = sqrt(r57309);
double r57311 = r57302 - r57310;
double r57312 = 2.0;
double r57313 = r57312 * r57305;
double r57314 = r57311 / r57313;
double r57315 = r57312 * r57307;
double r57316 = r57305 * r57307;
double r57317 = r57316 / r57297;
double r57318 = r57312 * r57317;
double r57319 = r57318 - r57297;
double r57320 = r57302 + r57319;
double r57321 = r57315 / r57320;
double r57322 = r57301 ? r57314 : r57321;
double r57323 = 1.24767440801605e-286;
bool r57324 = r57297 <= r57323;
double r57325 = -r57309;
double r57326 = fma(r57297, r57297, r57325);
double r57327 = r57310 - r57297;
double r57328 = r57326 / r57327;
double r57329 = r57328 / r57313;
double r57330 = r57302 + r57310;
double r57331 = r57315 / r57330;
double r57332 = r57301 ? r57329 : r57331;
double r57333 = 1.378005060912798e+90;
bool r57334 = r57297 <= r57333;
double r57335 = 1.0;
double r57336 = r57307 / r57297;
double r57337 = r57297 / r57305;
double r57338 = r57336 - r57337;
double r57339 = r57335 * r57338;
double r57340 = -2.0;
double r57341 = r57340 * r57336;
double r57342 = r57301 ? r57339 : r57341;
double r57343 = r57334 ? r57322 : r57342;
double r57344 = r57324 ? r57332 : r57343;
double r57345 = r57299 ? r57322 : r57344;
return r57345;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3256546684561791e+154 or 1.24767440801605e-286 < b < 1.378005060912798e+90Initial program 20.4
Taylor expanded around -inf 8.0
if -1.3256546684561791e+154 < b < 1.24767440801605e-286Initial program 8.5
rmApplied flip--8.5
Simplified8.5
Simplified8.5
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 +o rules:numerics
(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)))))))