\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 1083.7283358723973:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} \cdot \mathsf{fma}\left(a \cdot c, -4, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)}, b \cdot b + \mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1640565 = b;
double r1640566 = -r1640565;
double r1640567 = r1640565 * r1640565;
double r1640568 = 4.0;
double r1640569 = a;
double r1640570 = r1640568 * r1640569;
double r1640571 = c;
double r1640572 = r1640570 * r1640571;
double r1640573 = r1640567 - r1640572;
double r1640574 = sqrt(r1640573);
double r1640575 = r1640566 + r1640574;
double r1640576 = 2.0;
double r1640577 = r1640576 * r1640569;
double r1640578 = r1640575 / r1640577;
return r1640578;
}
double f(double a, double b, double c) {
double r1640579 = b;
double r1640580 = 1083.7283358723973;
bool r1640581 = r1640579 <= r1640580;
double r1640582 = a;
double r1640583 = c;
double r1640584 = r1640582 * r1640583;
double r1640585 = -4.0;
double r1640586 = r1640579 * r1640579;
double r1640587 = fma(r1640584, r1640585, r1640586);
double r1640588 = sqrt(r1640587);
double r1640589 = r1640588 * r1640587;
double r1640590 = r1640586 * r1640579;
double r1640591 = r1640589 - r1640590;
double r1640592 = r1640586 + r1640587;
double r1640593 = fma(r1640579, r1640588, r1640592);
double r1640594 = r1640591 / r1640593;
double r1640595 = r1640594 / r1640582;
double r1640596 = 2.0;
double r1640597 = r1640595 / r1640596;
double r1640598 = -2.0;
double r1640599 = r1640583 / r1640579;
double r1640600 = r1640598 * r1640599;
double r1640601 = r1640600 / r1640596;
double r1640602 = r1640581 ? r1640597 : r1640601;
return r1640602;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1083.7283358723973Initial program 17.4
Simplified17.3
rmApplied flip3--17.4
Simplified16.7
Simplified16.8
if 1083.7283358723973 < b Initial program 36.7
Simplified36.6
Taylor expanded around inf 15.9
Final simplification16.2
herbie shell --seed 2019151 +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)))