\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a} \le -1.7506913033883893 \cdot 10^{-08}:\\
\;\;\;\;\frac{b \cdot b - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1640305 = b;
double r1640306 = -r1640305;
double r1640307 = r1640305 * r1640305;
double r1640308 = 4.0;
double r1640309 = a;
double r1640310 = r1640308 * r1640309;
double r1640311 = c;
double r1640312 = r1640310 * r1640311;
double r1640313 = r1640307 - r1640312;
double r1640314 = sqrt(r1640313);
double r1640315 = r1640306 + r1640314;
double r1640316 = 2.0;
double r1640317 = r1640316 * r1640309;
double r1640318 = r1640315 / r1640317;
return r1640318;
}
double f(double a, double b, double c) {
double r1640319 = b;
double r1640320 = r1640319 * r1640319;
double r1640321 = 4.0;
double r1640322 = a;
double r1640323 = r1640321 * r1640322;
double r1640324 = c;
double r1640325 = r1640323 * r1640324;
double r1640326 = r1640320 - r1640325;
double r1640327 = sqrt(r1640326);
double r1640328 = -r1640319;
double r1640329 = r1640327 + r1640328;
double r1640330 = 2.0;
double r1640331 = r1640330 * r1640322;
double r1640332 = r1640329 / r1640331;
double r1640333 = -1.7506913033883893e-08;
bool r1640334 = r1640332 <= r1640333;
double r1640335 = r1640327 * r1640327;
double r1640336 = r1640320 - r1640335;
double r1640337 = r1640328 - r1640327;
double r1640338 = r1640331 * r1640337;
double r1640339 = r1640336 / r1640338;
double r1640340 = -r1640324;
double r1640341 = r1640340 / r1640319;
double r1640342 = r1640334 ? r1640339 : r1640341;
return r1640342;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) < -1.7506913033883893e-08Initial program 22.2
rmApplied flip-+22.2
Applied associate-/l/22.2
if -1.7506913033883893e-08 < (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) Initial program 54.5
Taylor expanded around inf 4.5
Simplified4.5
Final simplification10.4
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))