\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}-\frac{\frac{a \cdot 4}{\sqrt{\mathsf{fma}\left(-a, 4 \cdot c, b \cdot b\right)} + b} \cdot \frac{c}{a}}{2}double f(double a, double b, double c) {
double r44147 = b;
double r44148 = -r44147;
double r44149 = r44147 * r44147;
double r44150 = 4.0;
double r44151 = a;
double r44152 = r44150 * r44151;
double r44153 = c;
double r44154 = r44152 * r44153;
double r44155 = r44149 - r44154;
double r44156 = sqrt(r44155);
double r44157 = r44148 + r44156;
double r44158 = 2.0;
double r44159 = r44158 * r44151;
double r44160 = r44157 / r44159;
return r44160;
}
double f(double a, double b, double c) {
double r44161 = a;
double r44162 = 4.0;
double r44163 = r44161 * r44162;
double r44164 = -r44161;
double r44165 = c;
double r44166 = r44162 * r44165;
double r44167 = b;
double r44168 = r44167 * r44167;
double r44169 = fma(r44164, r44166, r44168);
double r44170 = sqrt(r44169);
double r44171 = r44170 + r44167;
double r44172 = r44163 / r44171;
double r44173 = r44165 / r44161;
double r44174 = r44172 * r44173;
double r44175 = 2.0;
double r44176 = r44174 / r44175;
double r44177 = -r44176;
return r44177;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 43.8
Simplified43.8
rmApplied flip--43.8
Simplified0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
rmApplied clear-num0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied times-frac0.5
Simplified0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019179 +o rules:numerics
(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)))