\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{1}{\frac{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{c}}{4}}double f(double a, double b, double c) {
double r53818 = b;
double r53819 = -r53818;
double r53820 = r53818 * r53818;
double r53821 = 4.0;
double r53822 = a;
double r53823 = r53821 * r53822;
double r53824 = c;
double r53825 = r53823 * r53824;
double r53826 = r53820 - r53825;
double r53827 = sqrt(r53826);
double r53828 = r53819 + r53827;
double r53829 = 2.0;
double r53830 = r53829 * r53822;
double r53831 = r53828 / r53830;
return r53831;
}
double f(double a, double b, double c) {
double r53832 = 1.0;
double r53833 = 2.0;
double r53834 = r53832 / r53833;
double r53835 = b;
double r53836 = -r53835;
double r53837 = r53835 * r53835;
double r53838 = 4.0;
double r53839 = a;
double r53840 = r53838 * r53839;
double r53841 = c;
double r53842 = r53840 * r53841;
double r53843 = r53837 - r53842;
double r53844 = sqrt(r53843);
double r53845 = r53836 - r53844;
double r53846 = r53832 * r53845;
double r53847 = r53846 / r53841;
double r53848 = r53847 / r53838;
double r53849 = r53832 / r53848;
double r53850 = r53834 * r53849;
return r53850;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.9
rmApplied flip-+43.9
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 clear-num0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2020003
(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)))