\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{c \cdot 4}{1}}{\left(-b\right) - \frac{\sqrt{\left(b \cdot b\right) \cdot \left(b \cdot b\right) - \left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c\right)}}{\sqrt{b \cdot b + \left(4 \cdot a\right) \cdot c}}}double f(double a, double b, double c) {
double r33100 = b;
double r33101 = -r33100;
double r33102 = r33100 * r33100;
double r33103 = 4.0;
double r33104 = a;
double r33105 = r33103 * r33104;
double r33106 = c;
double r33107 = r33105 * r33106;
double r33108 = r33102 - r33107;
double r33109 = sqrt(r33108);
double r33110 = r33101 + r33109;
double r33111 = 2.0;
double r33112 = r33111 * r33104;
double r33113 = r33110 / r33112;
return r33113;
}
double f(double a, double b, double c) {
double r33114 = 1.0;
double r33115 = 2.0;
double r33116 = r33114 / r33115;
double r33117 = c;
double r33118 = 4.0;
double r33119 = r33117 * r33118;
double r33120 = r33119 / r33114;
double r33121 = b;
double r33122 = -r33121;
double r33123 = r33121 * r33121;
double r33124 = r33123 * r33123;
double r33125 = a;
double r33126 = r33118 * r33125;
double r33127 = r33126 * r33117;
double r33128 = r33127 * r33127;
double r33129 = r33124 - r33128;
double r33130 = sqrt(r33129);
double r33131 = r33123 + r33127;
double r33132 = sqrt(r33131);
double r33133 = r33130 / r33132;
double r33134 = r33122 - r33133;
double r33135 = r33120 / r33134;
double r33136 = r33116 * r33135;
return r33136;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.7
rmApplied flip-+28.8
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.5
rmApplied associate-/r*0.3
Simplified0.3
rmApplied flip--0.3
Applied sqrt-div0.3
Final simplification0.3
herbie shell --seed 2020049 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))