\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{\left(c \cdot a\right) \cdot 4}{a}}{-\left(b + \sqrt{\frac{{b}^{3} \cdot b - \left(c \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot \left(4 \cdot a\right)\right)}{{b}^{2} + a \cdot \left(c \cdot 4\right)}}\right)}double f(double a, double b, double c) {
double r42243 = b;
double r42244 = -r42243;
double r42245 = r42243 * r42243;
double r42246 = 4.0;
double r42247 = a;
double r42248 = r42246 * r42247;
double r42249 = c;
double r42250 = r42248 * r42249;
double r42251 = r42245 - r42250;
double r42252 = sqrt(r42251);
double r42253 = r42244 + r42252;
double r42254 = 2.0;
double r42255 = r42254 * r42247;
double r42256 = r42253 / r42255;
return r42256;
}
double f(double a, double b, double c) {
double r42257 = 1.0;
double r42258 = 2.0;
double r42259 = r42257 / r42258;
double r42260 = c;
double r42261 = a;
double r42262 = r42260 * r42261;
double r42263 = 4.0;
double r42264 = r42262 * r42263;
double r42265 = r42264 / r42261;
double r42266 = b;
double r42267 = 3.0;
double r42268 = pow(r42266, r42267);
double r42269 = r42268 * r42266;
double r42270 = r42260 * r42260;
double r42271 = r42263 * r42261;
double r42272 = r42271 * r42271;
double r42273 = r42270 * r42272;
double r42274 = r42269 - r42273;
double r42275 = 2.0;
double r42276 = pow(r42266, r42275);
double r42277 = r42260 * r42263;
double r42278 = r42261 * r42277;
double r42279 = r42276 + r42278;
double r42280 = r42274 / r42279;
double r42281 = sqrt(r42280);
double r42282 = r42266 + r42281;
double r42283 = -r42282;
double r42284 = r42265 / r42283;
double r42285 = r42259 * r42284;
return r42285;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.8
rmApplied flip-+43.8
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.3
Simplified0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019179
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))