\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.001614548699194859283576053421427332068561:\\
\;\;\;\;\frac{\frac{b \cdot b - \mathsf{fma}\left(b, b, \left(4 \cdot a\right) \cdot c\right)}{\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 r29942 = b;
double r29943 = -r29942;
double r29944 = r29942 * r29942;
double r29945 = 4.0;
double r29946 = a;
double r29947 = r29945 * r29946;
double r29948 = c;
double r29949 = r29947 * r29948;
double r29950 = r29944 - r29949;
double r29951 = sqrt(r29950);
double r29952 = r29943 + r29951;
double r29953 = 2.0;
double r29954 = r29953 * r29946;
double r29955 = r29952 / r29954;
return r29955;
}
double f(double a, double b, double c) {
double r29956 = b;
double r29957 = 0.0016145486991948593;
bool r29958 = r29956 <= r29957;
double r29959 = r29956 * r29956;
double r29960 = 4.0;
double r29961 = a;
double r29962 = r29960 * r29961;
double r29963 = c;
double r29964 = r29962 * r29963;
double r29965 = fma(r29956, r29956, r29964);
double r29966 = r29959 - r29965;
double r29967 = r29959 - r29964;
double r29968 = sqrt(r29967);
double r29969 = r29968 + r29956;
double r29970 = r29966 / r29969;
double r29971 = 2.0;
double r29972 = r29971 * r29961;
double r29973 = r29970 / r29972;
double r29974 = -1.0;
double r29975 = r29963 / r29956;
double r29976 = r29974 * r29975;
double r29977 = r29958 ? r29973 : r29976;
return r29977;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 0.0016145486991948593Initial program 20.0
Simplified20.0
rmApplied flip--20.0
Simplified19.2
if 0.0016145486991948593 < b Initial program 45.8
Simplified45.8
Taylor expanded around inf 10.6
Final simplification11.4
herbie shell --seed 2019306 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))