\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{4 \cdot \left(a \cdot c\right)}{a}}{-\left(b + \sqrt{\frac{{b}^{4} - \left(4 \cdot \left(a \cdot c\right)\right) \cdot \left(4 \cdot \left(a \cdot c\right)\right)}{\mathsf{fma}\left(b, b, \left(4 \cdot a\right) \cdot c\right)}}\right)}double f(double a, double b, double c) {
double r49865 = b;
double r49866 = -r49865;
double r49867 = r49865 * r49865;
double r49868 = 4.0;
double r49869 = a;
double r49870 = r49868 * r49869;
double r49871 = c;
double r49872 = r49870 * r49871;
double r49873 = r49867 - r49872;
double r49874 = sqrt(r49873);
double r49875 = r49866 + r49874;
double r49876 = 2.0;
double r49877 = r49876 * r49869;
double r49878 = r49875 / r49877;
return r49878;
}
double f(double a, double b, double c) {
double r49879 = 1.0;
double r49880 = 2.0;
double r49881 = r49879 / r49880;
double r49882 = 4.0;
double r49883 = a;
double r49884 = c;
double r49885 = r49883 * r49884;
double r49886 = r49882 * r49885;
double r49887 = r49886 / r49883;
double r49888 = b;
double r49889 = 4.0;
double r49890 = pow(r49888, r49889);
double r49891 = r49886 * r49886;
double r49892 = r49890 - r49891;
double r49893 = r49882 * r49883;
double r49894 = r49893 * r49884;
double r49895 = fma(r49888, r49888, r49894);
double r49896 = r49892 / r49895;
double r49897 = sqrt(r49896);
double r49898 = r49888 + r49897;
double r49899 = -r49898;
double r49900 = r49887 / r49899;
double r49901 = r49881 * r49900;
return r49901;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 43.9
rmApplied flip-+43.9
Simplified0.4
rmApplied add-cbrt-cube0.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.2
rmApplied flip--0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019346 +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)))