\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{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r120 = b;
double r121 = -r120;
double r122 = r120 * r120;
double r123 = 4.0;
double r124 = a;
double r125 = r123 * r124;
double r126 = c;
double r127 = r125 * r126;
double r128 = r122 - r127;
double r129 = sqrt(r128);
double r130 = r121 + r129;
double r131 = 2.0;
double r132 = r131 * r124;
double r133 = r130 / r132;
return r133;
}
double f(double a, double b, double c) {
double r134 = 1.0;
double r135 = 2.0;
double r136 = r134 / r135;
double r137 = 4.0;
double r138 = a;
double r139 = c;
double r140 = r138 * r139;
double r141 = r137 * r140;
double r142 = r141 / r138;
double r143 = b;
double r144 = -r143;
double r145 = r143 * r143;
double r146 = r137 * r138;
double r147 = r146 * r139;
double r148 = r145 - r147;
double r149 = sqrt(r148);
double r150 = r144 - r149;
double r151 = r142 / r150;
double r152 = r136 * r151;
return r152;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.4
rmApplied flip-+43.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
rmApplied associate-/r*0.2
Final simplification0.2
herbie shell --seed 2020025
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))