\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{\frac{4 \cdot \left(a \cdot c\right)}{2}}{a}}{\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 r44996 = b;
double r44997 = -r44996;
double r44998 = r44996 * r44996;
double r44999 = 4.0;
double r45000 = a;
double r45001 = r44999 * r45000;
double r45002 = c;
double r45003 = r45001 * r45002;
double r45004 = r44998 - r45003;
double r45005 = sqrt(r45004);
double r45006 = r44997 + r45005;
double r45007 = 2.0;
double r45008 = r45007 * r45000;
double r45009 = r45006 / r45008;
return r45009;
}
double f(double a, double b, double c) {
double r45010 = 4.0;
double r45011 = a;
double r45012 = c;
double r45013 = r45011 * r45012;
double r45014 = r45010 * r45013;
double r45015 = 2.0;
double r45016 = r45014 / r45015;
double r45017 = r45016 / r45011;
double r45018 = b;
double r45019 = -r45018;
double r45020 = r45018 * r45018;
double r45021 = r45020 * r45020;
double r45022 = r45010 * r45011;
double r45023 = r45022 * r45012;
double r45024 = r45023 * r45023;
double r45025 = r45021 - r45024;
double r45026 = sqrt(r45025);
double r45027 = r45020 + r45023;
double r45028 = sqrt(r45027);
double r45029 = r45026 / r45028;
double r45030 = r45019 - r45029;
double r45031 = r45017 / r45030;
return r45031;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.4
rmApplied flip-+28.4
Simplified0.5
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.5
rmApplied associate-/r*0.4
Simplified0.4
rmApplied flip--0.4
Applied sqrt-div0.4
Final simplification0.4
herbie shell --seed 2020036 +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)))