\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.333300421862763794492150706903049815887 \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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.160883915256953043937503703321280239271 \cdot 10^{-293}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\left(a \cdot c\right) \cdot 4}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.191203142513164639216663918436976252985 \cdot 10^{117}:\\
\;\;\;\;\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}:\\
\;\;\;\;\frac{2 \cdot c}{\frac{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right) - b \cdot b}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}\\
\end{array}double f(double a, double b, double c) {
double r47302 = b;
double r47303 = 0.0;
bool r47304 = r47302 >= r47303;
double r47305 = -r47302;
double r47306 = r47302 * r47302;
double r47307 = 4.0;
double r47308 = a;
double r47309 = r47307 * r47308;
double r47310 = c;
double r47311 = r47309 * r47310;
double r47312 = r47306 - r47311;
double r47313 = sqrt(r47312);
double r47314 = r47305 - r47313;
double r47315 = 2.0;
double r47316 = r47315 * r47308;
double r47317 = r47314 / r47316;
double r47318 = r47315 * r47310;
double r47319 = r47305 + r47313;
double r47320 = r47318 / r47319;
double r47321 = r47304 ? r47317 : r47320;
return r47321;
}
double f(double a, double b, double c) {
double r47322 = b;
double r47323 = -1.3333004218627638e+154;
bool r47324 = r47322 <= r47323;
double r47325 = 0.0;
bool r47326 = r47322 >= r47325;
double r47327 = -r47322;
double r47328 = r47322 * r47322;
double r47329 = 4.0;
double r47330 = a;
double r47331 = r47329 * r47330;
double r47332 = c;
double r47333 = r47331 * r47332;
double r47334 = r47328 - r47333;
double r47335 = sqrt(r47334);
double r47336 = r47327 - r47335;
double r47337 = 2.0;
double r47338 = r47337 * r47330;
double r47339 = r47336 / r47338;
double r47340 = r47337 * r47332;
double r47341 = r47330 * r47332;
double r47342 = r47341 / r47322;
double r47343 = r47337 * r47342;
double r47344 = 2.0;
double r47345 = r47344 * r47322;
double r47346 = r47343 - r47345;
double r47347 = r47340 / r47346;
double r47348 = r47326 ? r47339 : r47347;
double r47349 = 1.160883915256953e-293;
bool r47350 = r47322 <= r47349;
double r47351 = r47341 * r47329;
double r47352 = r47335 - r47322;
double r47353 = r47351 / r47352;
double r47354 = r47353 / r47338;
double r47355 = r47340 / r47352;
double r47356 = r47326 ? r47354 : r47355;
double r47357 = 1.1912031425131646e+117;
bool r47358 = r47322 <= r47357;
double r47359 = 1.0;
double r47360 = r47332 / r47322;
double r47361 = r47322 / r47330;
double r47362 = r47360 - r47361;
double r47363 = r47359 * r47362;
double r47364 = r47334 - r47328;
double r47365 = r47335 + r47322;
double r47366 = r47364 / r47365;
double r47367 = r47340 / r47366;
double r47368 = r47326 ? r47363 : r47367;
double r47369 = r47358 ? r47348 : r47368;
double r47370 = r47350 ? r47356 : r47369;
double r47371 = r47324 ? r47348 : r47370;
return r47371;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3333004218627638e+154 or 1.160883915256953e-293 < b < 1.1912031425131646e+117Initial program 19.7
Simplified19.7
Taylor expanded around -inf 8.1
if -1.3333004218627638e+154 < b < 1.160883915256953e-293Initial program 8.7
Simplified8.7
rmApplied flip--8.7
Simplified8.7
Simplified8.7
if 1.1912031425131646e+117 < b Initial program 50.7
Simplified50.7
Taylor expanded around inf 10.4
Taylor expanded around 0 3.9
Simplified3.9
rmApplied flip--3.9
Simplified3.9
Final simplification7.8
herbie shell --seed 2019351
(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)))))))