\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{4 \cdot \frac{c}{1}}{-\left(b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r96 = b;
double r97 = -r96;
double r98 = r96 * r96;
double r99 = 4.0;
double r100 = a;
double r101 = r99 * r100;
double r102 = c;
double r103 = r101 * r102;
double r104 = r98 - r103;
double r105 = sqrt(r104);
double r106 = r97 + r105;
double r107 = 2.0;
double r108 = r107 * r100;
double r109 = r106 / r108;
return r109;
}
double f(double a, double b, double c) {
double r110 = 1.0;
double r111 = 2.0;
double r112 = r110 / r111;
double r113 = 4.0;
double r114 = c;
double r115 = r114 / r110;
double r116 = r113 * r115;
double r117 = b;
double r118 = r117 * r117;
double r119 = a;
double r120 = r113 * r119;
double r121 = r120 * r114;
double r122 = r118 - r121;
double r123 = sqrt(r122);
double r124 = r117 + r123;
double r125 = -r124;
double r126 = r116 / r125;
double r127 = r112 * r126;
return r127;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.3
rmApplied flip-+28.4
Simplified0.5
rmApplied add-cbrt-cube0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied times-frac0.4
Simplified0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020025
(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)))