\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{4 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2}double f(double a, double b, double c) {
double r26953 = b;
double r26954 = -r26953;
double r26955 = r26953 * r26953;
double r26956 = 4.0;
double r26957 = a;
double r26958 = r26956 * r26957;
double r26959 = c;
double r26960 = r26958 * r26959;
double r26961 = r26955 - r26960;
double r26962 = sqrt(r26961);
double r26963 = r26954 + r26962;
double r26964 = 2.0;
double r26965 = r26964 * r26957;
double r26966 = r26963 / r26965;
return r26966;
}
double f(double a, double b, double c) {
double r26967 = 4.0;
double r26968 = c;
double r26969 = r26967 * r26968;
double r26970 = b;
double r26971 = -r26970;
double r26972 = r26970 * r26970;
double r26973 = a;
double r26974 = r26967 * r26973;
double r26975 = r26974 * r26968;
double r26976 = r26972 - r26975;
double r26977 = sqrt(r26976);
double r26978 = r26971 - r26977;
double r26979 = r26969 / r26978;
double r26980 = 2.0;
double r26981 = r26979 / r26980;
return r26981;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.5
rmApplied flip-+52.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
rmApplied associate-/r*0.2
rmApplied *-un-lft-identity0.2
Applied associate-/r*0.2
Simplified0.1
Final simplification0.1
herbie shell --seed 2019298
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e31) (< 4.93038e-32 b 2.02824e31) (< 4.93038e-32 c 2.02824e31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))