\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\right) - \sqrt{\frac{\left(-\left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c\right)\right) + {b}^{4}}{b \cdot b + \left(4 \cdot a\right) \cdot c}}}double f(double a, double b, double c) {
double r30270 = b;
double r30271 = -r30270;
double r30272 = r30270 * r30270;
double r30273 = 4.0;
double r30274 = a;
double r30275 = r30273 * r30274;
double r30276 = c;
double r30277 = r30275 * r30276;
double r30278 = r30272 - r30277;
double r30279 = sqrt(r30278);
double r30280 = r30271 + r30279;
double r30281 = 2.0;
double r30282 = r30281 * r30274;
double r30283 = r30280 / r30282;
return r30283;
}
double f(double a, double b, double c) {
double r30284 = 1.0;
double r30285 = 2.0;
double r30286 = r30284 / r30285;
double r30287 = 4.0;
double r30288 = a;
double r30289 = c;
double r30290 = r30288 * r30289;
double r30291 = r30287 * r30290;
double r30292 = r30291 / r30288;
double r30293 = b;
double r30294 = -r30293;
double r30295 = r30287 * r30288;
double r30296 = r30295 * r30289;
double r30297 = r30296 * r30296;
double r30298 = -r30297;
double r30299 = 4.0;
double r30300 = pow(r30293, r30299);
double r30301 = r30298 + r30300;
double r30302 = r30293 * r30293;
double r30303 = r30302 + r30296;
double r30304 = r30301 / r30303;
double r30305 = sqrt(r30304);
double r30306 = r30294 - r30305;
double r30307 = r30292 / r30306;
double r30308 = r30286 * r30307;
return r30308;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.4
rmApplied flip-+28.4
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.5
rmApplied associate-/r*0.4
rmApplied flip--0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020036
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))