\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.367002129773412099713675796535889049973 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 17754385347718217013022045448400749461500:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{\sqrt[3]{c} \cdot \sqrt[3]{c}}{\sqrt[3]{\sqrt{b}}}\right) \cdot \frac{\sqrt[3]{c}}{\sqrt[3]{\sqrt{b}}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r38135 = b;
double r38136 = 0.0;
bool r38137 = r38135 >= r38136;
double r38138 = 2.0;
double r38139 = c;
double r38140 = r38138 * r38139;
double r38141 = -r38135;
double r38142 = r38135 * r38135;
double r38143 = 4.0;
double r38144 = a;
double r38145 = r38143 * r38144;
double r38146 = r38145 * r38139;
double r38147 = r38142 - r38146;
double r38148 = sqrt(r38147);
double r38149 = r38141 - r38148;
double r38150 = r38140 / r38149;
double r38151 = r38141 + r38148;
double r38152 = r38138 * r38144;
double r38153 = r38151 / r38152;
double r38154 = r38137 ? r38150 : r38153;
return r38154;
}
double f(double a, double b, double c) {
double r38155 = b;
double r38156 = -1.367002129773412e+154;
bool r38157 = r38155 <= r38156;
double r38158 = 0.0;
bool r38159 = r38155 >= r38158;
double r38160 = 2.0;
double r38161 = c;
double r38162 = r38160 * r38161;
double r38163 = -r38155;
double r38164 = r38155 * r38155;
double r38165 = 4.0;
double r38166 = a;
double r38167 = r38165 * r38166;
double r38168 = r38167 * r38161;
double r38169 = r38164 - r38168;
double r38170 = sqrt(r38169);
double r38171 = r38163 - r38170;
double r38172 = r38162 / r38171;
double r38173 = r38166 * r38161;
double r38174 = r38173 / r38155;
double r38175 = r38160 * r38174;
double r38176 = 2.0;
double r38177 = r38176 * r38155;
double r38178 = r38175 - r38177;
double r38179 = r38160 * r38166;
double r38180 = r38178 / r38179;
double r38181 = r38159 ? r38172 : r38180;
double r38182 = 1.7754385347718217e+40;
bool r38183 = r38155 <= r38182;
double r38184 = sqrt(r38170);
double r38185 = r38184 * r38184;
double r38186 = r38163 - r38185;
double r38187 = r38162 / r38186;
double r38188 = r38170 - r38155;
double r38189 = r38188 / r38179;
double r38190 = r38159 ? r38187 : r38189;
double r38191 = cbrt(r38155);
double r38192 = r38191 * r38191;
double r38193 = r38166 / r38192;
double r38194 = cbrt(r38161);
double r38195 = r38194 * r38194;
double r38196 = sqrt(r38155);
double r38197 = cbrt(r38196);
double r38198 = r38195 / r38197;
double r38199 = r38193 * r38198;
double r38200 = r38194 / r38197;
double r38201 = r38199 * r38200;
double r38202 = r38160 * r38201;
double r38203 = r38155 - r38202;
double r38204 = r38163 - r38203;
double r38205 = r38162 / r38204;
double r38206 = r38159 ? r38205 : r38189;
double r38207 = r38183 ? r38190 : r38206;
double r38208 = r38157 ? r38181 : r38207;
return r38208;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.367002129773412e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.5
if -1.367002129773412e+154 < b < 1.7754385347718217e+40Initial program 9.6
Simplified9.6
rmApplied add-sqr-sqrt9.6
Applied sqrt-prod9.7
if 1.7754385347718217e+40 < b Initial program 24.0
Simplified24.0
Taylor expanded around inf 7.5
rmApplied add-cube-cbrt7.5
Applied times-frac4.5
rmApplied add-sqr-sqrt4.5
Applied cbrt-prod4.5
Applied add-cube-cbrt4.5
Applied times-frac4.5
Applied associate-*r*4.5
Final simplification8.3
herbie shell --seed 2019323
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))