\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 2358.6776751159355:\\
\;\;\;\;\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\left(2 \cdot a\right) \cdot \left(\left(b \cdot b + b \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right) + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r8303829 = b;
double r8303830 = -r8303829;
double r8303831 = r8303829 * r8303829;
double r8303832 = 4.0;
double r8303833 = a;
double r8303834 = r8303832 * r8303833;
double r8303835 = c;
double r8303836 = r8303834 * r8303835;
double r8303837 = r8303831 - r8303836;
double r8303838 = sqrt(r8303837);
double r8303839 = r8303830 + r8303838;
double r8303840 = 2.0;
double r8303841 = r8303840 * r8303833;
double r8303842 = r8303839 / r8303841;
return r8303842;
}
double f(double a, double b, double c) {
double r8303843 = b;
double r8303844 = 2358.6776751159355;
bool r8303845 = r8303843 <= r8303844;
double r8303846 = r8303843 * r8303843;
double r8303847 = 4.0;
double r8303848 = c;
double r8303849 = a;
double r8303850 = r8303848 * r8303849;
double r8303851 = r8303847 * r8303850;
double r8303852 = r8303846 - r8303851;
double r8303853 = sqrt(r8303852);
double r8303854 = r8303852 * r8303853;
double r8303855 = r8303846 * r8303843;
double r8303856 = r8303854 - r8303855;
double r8303857 = 2.0;
double r8303858 = r8303857 * r8303849;
double r8303859 = r8303843 * r8303853;
double r8303860 = r8303846 + r8303859;
double r8303861 = r8303853 * r8303853;
double r8303862 = r8303860 + r8303861;
double r8303863 = r8303858 * r8303862;
double r8303864 = r8303856 / r8303863;
double r8303865 = r8303848 / r8303843;
double r8303866 = -r8303865;
double r8303867 = r8303845 ? r8303864 : r8303866;
return r8303867;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 2358.6776751159355Initial program 18.2
Simplified18.2
rmApplied flip3--18.4
Applied associate-/l/18.4
Simplified17.6
if 2358.6776751159355 < b Initial program 37.4
Simplified37.4
Taylor expanded around inf 15.3
Simplified15.3
Final simplification16.3
herbie shell --seed 2019119
(FPCore (a b c)
:name "Quadratic roots, narrow range"
: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)))