\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 -4.694684309811035 \cdot 10^{+121}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 4.6659701943749105 \cdot 10^{-84}:\\
\;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - b\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\
\end{array}double f(double a, double b, double c) {
double r1504917 = b;
double r1504918 = -r1504917;
double r1504919 = r1504917 * r1504917;
double r1504920 = 4.0;
double r1504921 = a;
double r1504922 = r1504920 * r1504921;
double r1504923 = c;
double r1504924 = r1504922 * r1504923;
double r1504925 = r1504919 - r1504924;
double r1504926 = sqrt(r1504925);
double r1504927 = r1504918 + r1504926;
double r1504928 = 2.0;
double r1504929 = r1504928 * r1504921;
double r1504930 = r1504927 / r1504929;
return r1504930;
}
double f(double a, double b, double c) {
double r1504931 = b;
double r1504932 = -4.694684309811035e+121;
bool r1504933 = r1504931 <= r1504932;
double r1504934 = c;
double r1504935 = r1504934 / r1504931;
double r1504936 = a;
double r1504937 = r1504931 / r1504936;
double r1504938 = r1504935 - r1504937;
double r1504939 = 2.0;
double r1504940 = r1504938 * r1504939;
double r1504941 = r1504940 / r1504939;
double r1504942 = 4.6659701943749105e-84;
bool r1504943 = r1504931 <= r1504942;
double r1504944 = 1.0;
double r1504945 = r1504944 / r1504936;
double r1504946 = r1504931 * r1504931;
double r1504947 = 4.0;
double r1504948 = r1504934 * r1504936;
double r1504949 = r1504947 * r1504948;
double r1504950 = r1504946 - r1504949;
double r1504951 = sqrt(r1504950);
double r1504952 = r1504951 - r1504931;
double r1504953 = r1504945 * r1504952;
double r1504954 = r1504953 / r1504939;
double r1504955 = -2.0;
double r1504956 = r1504935 * r1504955;
double r1504957 = r1504956 / r1504939;
double r1504958 = r1504943 ? r1504954 : r1504957;
double r1504959 = r1504933 ? r1504941 : r1504958;
return r1504959;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.694684309811035e+121Initial program 49.8
Simplified49.8
rmApplied div-inv49.9
Taylor expanded around -inf 2.6
Simplified2.6
if -4.694684309811035e+121 < b < 4.6659701943749105e-84Initial program 12.2
Simplified12.2
rmApplied div-inv12.3
if 4.6659701943749105e-84 < b Initial program 52.2
Simplified52.2
Taylor expanded around inf 9.3
Final simplification9.7
herbie shell --seed 2019144
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))