\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{4 \cdot \left(a \cdot c\right)}{a \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r34110 = b;
double r34111 = -r34110;
double r34112 = r34110 * r34110;
double r34113 = 4.0;
double r34114 = a;
double r34115 = r34113 * r34114;
double r34116 = c;
double r34117 = r34115 * r34116;
double r34118 = r34112 - r34117;
double r34119 = sqrt(r34118);
double r34120 = r34111 + r34119;
double r34121 = 2.0;
double r34122 = r34121 * r34114;
double r34123 = r34120 / r34122;
return r34123;
}
double f(double a, double b, double c) {
double r34124 = 1.0;
double r34125 = 2.0;
double r34126 = r34124 / r34125;
double r34127 = 4.0;
double r34128 = a;
double r34129 = c;
double r34130 = r34128 * r34129;
double r34131 = r34127 * r34130;
double r34132 = b;
double r34133 = -r34132;
double r34134 = r34132 * r34132;
double r34135 = r34127 * r34128;
double r34136 = r34135 * r34129;
double r34137 = r34134 - r34136;
double r34138 = sqrt(r34137);
double r34139 = r34133 - r34138;
double r34140 = r34128 * r34139;
double r34141 = r34131 / r34140;
double r34142 = r34126 * r34141;
return r34142;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.4
rmApplied flip-+43.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020056
(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)))