\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 230.5116632738639736999175511300563812256:\\
\;\;\;\;\frac{\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}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r30208 = b;
double r30209 = -r30208;
double r30210 = r30208 * r30208;
double r30211 = 4.0;
double r30212 = a;
double r30213 = r30211 * r30212;
double r30214 = c;
double r30215 = r30213 * r30214;
double r30216 = r30210 - r30215;
double r30217 = sqrt(r30216);
double r30218 = r30209 + r30217;
double r30219 = 2.0;
double r30220 = r30219 * r30212;
double r30221 = r30218 / r30220;
return r30221;
}
double f(double a, double b, double c) {
double r30222 = b;
double r30223 = 230.51166327386397;
bool r30224 = r30222 <= r30223;
double r30225 = r30222 * r30222;
double r30226 = 4.0;
double r30227 = a;
double r30228 = r30226 * r30227;
double r30229 = c;
double r30230 = r30228 * r30229;
double r30231 = r30225 - r30230;
double r30232 = r30231 - r30225;
double r30233 = sqrt(r30231);
double r30234 = r30233 + r30222;
double r30235 = r30232 / r30234;
double r30236 = 2.0;
double r30237 = r30236 * r30227;
double r30238 = r30235 / r30237;
double r30239 = -1.0;
double r30240 = r30229 / r30222;
double r30241 = r30239 * r30240;
double r30242 = r30224 ? r30238 : r30241;
return r30242;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 230.51166327386397Initial program 16.1
Simplified16.1
rmApplied flip--16.1
Simplified15.1
if 230.51166327386397 < b Initial program 34.9
Simplified34.9
Taylor expanded around inf 17.5
rmApplied *-un-lft-identity17.5
Applied times-frac17.4
Simplified17.4
Taylor expanded around 0 17.4
Final simplification16.6
herbie shell --seed 2019212
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))