double f(double a, double b, double c) {
double r7511341 = b;
double r7511342 = -r7511341;
double r7511343 = r7511341 * r7511341;
double r7511344 = 4.0;
double r7511345 = a;
double r7511346 = r7511344 * r7511345;
double r7511347 = c;
double r7511348 = r7511346 * r7511347;
double r7511349 = r7511343 - r7511348;
double r7511350 = sqrt(r7511349);
double r7511351 = r7511342 + r7511350;
double r7511352 = 2.0;
double r7511353 = r7511352 * r7511345;
double r7511354 = r7511351 / r7511353;
return r7511354;
}
double f(double a, double b, double c) {
double r7511355 = b;
double r7511356 = 2131.6843423170594;
bool r7511357 = r7511355 <= r7511356;
double r7511358 = r7511355 * r7511355;
double r7511359 = 4.0;
double r7511360 = c;
double r7511361 = a;
double r7511362 = r7511360 * r7511361;
double r7511363 = r7511359 * r7511362;
double r7511364 = r7511358 - r7511363;
double r7511365 = sqrt(r7511364);
double r7511366 = r7511364 * r7511365;
double r7511367 = r7511358 * r7511355;
double r7511368 = r7511366 - r7511367;
double r7511369 = 2.0;
double r7511370 = r7511369 * r7511361;
double r7511371 = r7511355 * r7511365;
double r7511372 = r7511358 + r7511371;
double r7511373 = r7511365 * r7511365;
double r7511374 = r7511372 + r7511373;
double r7511375 = r7511370 * r7511374;
double r7511376 = r7511368 / r7511375;
double r7511377 = r7511360 / r7511355;
double r7511378 = -r7511377;
double r7511379 = r7511357 ? r7511376 : r7511378;
return r7511379;
}
\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 2131.6843423170594:\\
\;\;\;\;\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 < 2131.6843423170594Initial program 17.6
Simplified17.6
rmApplied flip3--17.7
Applied associate-/l/17.7
Simplified16.9
if 2131.6843423170594 < b Initial program 37.3
Simplified37.3
Taylor expanded around inf 15.5
Simplified15.5
Final simplification16.1
herbie shell --seed 2019101
(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)))