\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{\frac{{b}^{6} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}{\left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c + {b}^{2}\right) + \left(b \cdot b\right) \cdot \left(b \cdot b\right)}}\right)}double f(double a, double b, double c) {
double r47376 = b;
double r47377 = -r47376;
double r47378 = r47376 * r47376;
double r47379 = 4.0;
double r47380 = a;
double r47381 = r47379 * r47380;
double r47382 = c;
double r47383 = r47381 * r47382;
double r47384 = r47378 - r47383;
double r47385 = sqrt(r47384);
double r47386 = r47377 + r47385;
double r47387 = 2.0;
double r47388 = r47387 * r47380;
double r47389 = r47386 / r47388;
return r47389;
}
double f(double a, double b, double c) {
double r47390 = 4.0;
double r47391 = a;
double r47392 = c;
double r47393 = r47391 * r47392;
double r47394 = r47390 * r47393;
double r47395 = 2.0;
double r47396 = r47395 * r47391;
double r47397 = b;
double r47398 = -r47397;
double r47399 = 6.0;
double r47400 = pow(r47397, r47399);
double r47401 = r47390 * r47391;
double r47402 = r47401 * r47392;
double r47403 = 3.0;
double r47404 = pow(r47402, r47403);
double r47405 = r47400 - r47404;
double r47406 = 2.0;
double r47407 = pow(r47397, r47406);
double r47408 = r47402 + r47407;
double r47409 = r47402 * r47408;
double r47410 = r47397 * r47397;
double r47411 = r47410 * r47410;
double r47412 = r47409 + r47411;
double r47413 = r47405 / r47412;
double r47414 = sqrt(r47413);
double r47415 = r47398 - r47414;
double r47416 = r47396 * r47415;
double r47417 = r47394 / r47416;
return r47417;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.6
rmApplied flip-+43.7
Simplified0.4
rmApplied flip3--0.4
Simplified0.4
Simplified0.4
Final simplification0.5
herbie shell --seed 2019297
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))