double f(double a, double b, double c) {
double r8128296 = b;
double r8128297 = -r8128296;
double r8128298 = r8128296 * r8128296;
double r8128299 = 4.0;
double r8128300 = a;
double r8128301 = r8128299 * r8128300;
double r8128302 = c;
double r8128303 = r8128301 * r8128302;
double r8128304 = r8128298 - r8128303;
double r8128305 = sqrt(r8128304);
double r8128306 = r8128297 + r8128305;
double r8128307 = 2.0;
double r8128308 = r8128307 * r8128300;
double r8128309 = r8128306 / r8128308;
return r8128309;
}
double f(double a, double b, double c) {
double r8128310 = b;
double r8128311 = 0.003195690106913911;
bool r8128312 = r8128310 <= r8128311;
double r8128313 = r8128310 * r8128310;
double r8128314 = 4.0;
double r8128315 = c;
double r8128316 = a;
double r8128317 = r8128315 * r8128316;
double r8128318 = r8128314 * r8128317;
double r8128319 = r8128313 - r8128318;
double r8128320 = sqrt(r8128319);
double r8128321 = r8128319 * r8128320;
double r8128322 = r8128313 * r8128310;
double r8128323 = r8128321 - r8128322;
double r8128324 = 2.0;
double r8128325 = r8128324 * r8128316;
double r8128326 = r8128310 * r8128320;
double r8128327 = r8128313 + r8128326;
double r8128328 = r8128320 * r8128320;
double r8128329 = r8128327 + r8128328;
double r8128330 = r8128325 * r8128329;
double r8128331 = r8128323 / r8128330;
double r8128332 = 0.1579968285672225;
bool r8128333 = r8128310 <= r8128332;
double r8128334 = r8128315 / r8128310;
double r8128335 = -r8128334;
double r8128336 = 1.5164618986717855;
bool r8128337 = r8128310 <= r8128336;
double r8128338 = r8128337 ? r8128331 : r8128335;
double r8128339 = r8128333 ? r8128335 : r8128338;
double r8128340 = r8128312 ? r8128331 : r8128339;
return r8128340;
}
\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 0.003195690106913911:\\
\;\;\;\;\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\left(2 \cdot a\right) \cdot \left(\left(b \cdot b + b \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right) + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right)}\\
\mathbf{elif}\;b \le 0.1579968285672225:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 1.5164618986717855:\\
\;\;\;\;\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\left(2 \cdot a\right) \cdot \left(\left(b \cdot b + b \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right) + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}


Bits error versus a



Bits error versus b



Bits error versus c
if b < 0.003195690106913911 or 0.1579968285672225 < b < 1.5164618986717855Initial program 23.5
Simplified23.5
rmApplied flip3--23.6
Applied associate-/l/23.6
Simplified22.9
if 0.003195690106913911 < b < 0.1579968285672225 or 1.5164618986717855 < b Initial program 46.5
Simplified46.5
Taylor expanded around inf 10.0
Simplified10.0
Final simplification11.6
herbie shell --seed 2019102
(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)))