\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{\frac{4}{\frac{2}{a \cdot c}}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{a}double f(double a, double b, double c) {
double r48905 = b;
double r48906 = -r48905;
double r48907 = r48905 * r48905;
double r48908 = 4.0;
double r48909 = a;
double r48910 = r48908 * r48909;
double r48911 = c;
double r48912 = r48910 * r48911;
double r48913 = r48907 - r48912;
double r48914 = sqrt(r48913);
double r48915 = r48906 + r48914;
double r48916 = 2.0;
double r48917 = r48916 * r48909;
double r48918 = r48915 / r48917;
return r48918;
}
double f(double a, double b, double c) {
double r48919 = 4.0;
double r48920 = 2.0;
double r48921 = a;
double r48922 = c;
double r48923 = r48921 * r48922;
double r48924 = r48920 / r48923;
double r48925 = r48919 / r48924;
double r48926 = b;
double r48927 = -r48926;
double r48928 = r48926 * r48926;
double r48929 = r48919 * r48921;
double r48930 = r48929 * r48922;
double r48931 = r48928 - r48930;
double r48932 = sqrt(r48931);
double r48933 = r48927 - r48932;
double r48934 = r48925 / r48933;
double r48935 = r48934 / r48921;
return r48935;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.9
rmApplied flip-+43.9
Simplified0.4
rmApplied div-inv0.5
Applied times-frac0.5
Simplified0.5
rmApplied associate-*r/0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020089 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))