\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{4 \cdot \left(a \cdot c\right)}{a}}{\left(-b\right) - \sqrt{\frac{{b}^{6} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}{\left(4 \cdot \left(a \cdot c\right)\right) \cdot \left(b \cdot b + \left(4 \cdot a\right) \cdot c\right) + {b}^{4}}}} \cdot \frac{1}{2}double f(double a, double b, double c) {
double r37211 = b;
double r37212 = -r37211;
double r37213 = r37211 * r37211;
double r37214 = 4.0;
double r37215 = a;
double r37216 = r37214 * r37215;
double r37217 = c;
double r37218 = r37216 * r37217;
double r37219 = r37213 - r37218;
double r37220 = sqrt(r37219);
double r37221 = r37212 + r37220;
double r37222 = 2.0;
double r37223 = r37222 * r37215;
double r37224 = r37221 / r37223;
return r37224;
}
double f(double a, double b, double c) {
double r37225 = 4.0;
double r37226 = a;
double r37227 = c;
double r37228 = r37226 * r37227;
double r37229 = r37225 * r37228;
double r37230 = r37229 / r37226;
double r37231 = b;
double r37232 = -r37231;
double r37233 = 6.0;
double r37234 = pow(r37231, r37233);
double r37235 = r37225 * r37226;
double r37236 = r37235 * r37227;
double r37237 = 3.0;
double r37238 = pow(r37236, r37237);
double r37239 = r37234 - r37238;
double r37240 = r37231 * r37231;
double r37241 = r37240 + r37236;
double r37242 = r37229 * r37241;
double r37243 = 4.0;
double r37244 = pow(r37231, r37243);
double r37245 = r37242 + r37244;
double r37246 = r37239 / r37245;
double r37247 = sqrt(r37246);
double r37248 = r37232 - r37247;
double r37249 = r37230 / r37248;
double r37250 = 1.0;
double r37251 = 2.0;
double r37252 = r37250 / r37251;
double r37253 = r37249 * r37252;
return r37253;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.5
rmApplied flip-+52.5
Simplified0.4
rmApplied flip3--0.4
Simplified0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.2
Final simplification0.2
herbie shell --seed 2020047
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))