\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.361371441856741221428064888771237209188 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.750597423682242910828949792302222725036 \cdot 10^{107}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\frac{\left(c \cdot 4\right) \cdot a}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}double f(double a, double b, double c) {
double r32130 = b;
double r32131 = 0.0;
bool r32132 = r32130 >= r32131;
double r32133 = -r32130;
double r32134 = r32130 * r32130;
double r32135 = 4.0;
double r32136 = a;
double r32137 = r32135 * r32136;
double r32138 = c;
double r32139 = r32137 * r32138;
double r32140 = r32134 - r32139;
double r32141 = sqrt(r32140);
double r32142 = r32133 - r32141;
double r32143 = 2.0;
double r32144 = r32143 * r32136;
double r32145 = r32142 / r32144;
double r32146 = r32143 * r32138;
double r32147 = r32133 + r32141;
double r32148 = r32146 / r32147;
double r32149 = r32132 ? r32145 : r32148;
return r32149;
}
double f(double a, double b, double c) {
double r32150 = b;
double r32151 = -1.3613714418567412e+154;
bool r32152 = r32150 <= r32151;
double r32153 = 0.0;
bool r32154 = r32150 >= r32153;
double r32155 = -r32150;
double r32156 = r32150 * r32150;
double r32157 = 4.0;
double r32158 = a;
double r32159 = r32157 * r32158;
double r32160 = c;
double r32161 = r32159 * r32160;
double r32162 = r32156 - r32161;
double r32163 = sqrt(r32162);
double r32164 = r32155 - r32163;
double r32165 = 2.0;
double r32166 = r32165 * r32158;
double r32167 = r32164 / r32166;
double r32168 = r32165 * r32160;
double r32169 = r32158 * r32160;
double r32170 = r32169 / r32150;
double r32171 = r32165 * r32170;
double r32172 = r32171 - r32150;
double r32173 = r32155 + r32172;
double r32174 = r32168 / r32173;
double r32175 = r32154 ? r32167 : r32174;
double r32176 = 2.750597423682243e+107;
bool r32177 = r32150 <= r32176;
double r32178 = sqrt(r32163);
double r32179 = r32178 * r32178;
double r32180 = r32155 - r32179;
double r32181 = r32180 / r32166;
double r32182 = r32155 + r32163;
double r32183 = r32168 / r32182;
double r32184 = r32154 ? r32181 : r32183;
double r32185 = 1.0;
double r32186 = r32160 / r32150;
double r32187 = r32150 / r32158;
double r32188 = r32186 - r32187;
double r32189 = r32185 * r32188;
double r32190 = r32160 * r32157;
double r32191 = r32190 * r32158;
double r32192 = r32191 / r32164;
double r32193 = r32168 / r32192;
double r32194 = r32154 ? r32189 : r32193;
double r32195 = r32177 ? r32184 : r32194;
double r32196 = r32152 ? r32175 : r32195;
return r32196;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3613714418567412e+154Initial program 38.2
Taylor expanded around -inf 6.1
if -1.3613714418567412e+154 < b < 2.750597423682243e+107Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 2.750597423682243e+107 < b Initial program 49.6
Taylor expanded around inf 9.1
Taylor expanded around 0 3.1
Simplified3.1
rmApplied flip-+3.1
Simplified3.1
Final simplification7.5
herbie shell --seed 2019235 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))