\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 192.9393170232888:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, b + \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}, \mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\left(a \cdot \frac{c}{b}\right) \cdot -2}{\sqrt{a}}}{\sqrt{a}}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1371339 = b;
double r1371340 = -r1371339;
double r1371341 = r1371339 * r1371339;
double r1371342 = 4.0;
double r1371343 = a;
double r1371344 = r1371342 * r1371343;
double r1371345 = c;
double r1371346 = r1371344 * r1371345;
double r1371347 = r1371341 - r1371346;
double r1371348 = sqrt(r1371347);
double r1371349 = r1371340 + r1371348;
double r1371350 = 2.0;
double r1371351 = r1371350 * r1371343;
double r1371352 = r1371349 / r1371351;
return r1371352;
}
double f(double a, double b, double c) {
double r1371353 = b;
double r1371354 = 192.9393170232888;
bool r1371355 = r1371353 <= r1371354;
double r1371356 = -4.0;
double r1371357 = a;
double r1371358 = r1371356 * r1371357;
double r1371359 = c;
double r1371360 = r1371353 * r1371353;
double r1371361 = fma(r1371358, r1371359, r1371360);
double r1371362 = sqrt(r1371361);
double r1371363 = r1371362 * r1371361;
double r1371364 = r1371360 * r1371353;
double r1371365 = r1371363 - r1371364;
double r1371366 = r1371353 + r1371362;
double r1371367 = fma(r1371353, r1371366, r1371361);
double r1371368 = r1371365 / r1371367;
double r1371369 = r1371368 / r1371357;
double r1371370 = 2.0;
double r1371371 = r1371369 / r1371370;
double r1371372 = r1371359 / r1371353;
double r1371373 = r1371357 * r1371372;
double r1371374 = -2.0;
double r1371375 = r1371373 * r1371374;
double r1371376 = sqrt(r1371357);
double r1371377 = r1371375 / r1371376;
double r1371378 = r1371377 / r1371376;
double r1371379 = r1371378 / r1371370;
double r1371380 = r1371355 ? r1371371 : r1371379;
return r1371380;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 192.9393170232888Initial program 15.8
Simplified15.7
rmApplied flip3--15.8
Simplified15.2
Simplified15.2
if 192.9393170232888 < b Initial program 35.1
Simplified35.0
Taylor expanded around inf 17.2
rmApplied *-un-lft-identity17.2
Applied times-frac17.2
Simplified17.2
rmApplied add-sqr-sqrt17.2
Applied associate-/r*17.3
Final simplification16.5
herbie shell --seed 2019158 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))