\begin{array}{l}
\mathbf{if}\;b \ge 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 -2.1604745042066072 \cdot 10^{+157}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.7554680166001505 \cdot 10^{+146}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \left(\left(\sqrt[3]{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}}} \cdot \sqrt[3]{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}}}\right) \cdot \left(\sqrt[3]{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right)\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1035114 = b;
double r1035115 = 0.0;
bool r1035116 = r1035114 >= r1035115;
double r1035117 = -r1035114;
double r1035118 = r1035114 * r1035114;
double r1035119 = 4.0;
double r1035120 = a;
double r1035121 = r1035119 * r1035120;
double r1035122 = c;
double r1035123 = r1035121 * r1035122;
double r1035124 = r1035118 - r1035123;
double r1035125 = sqrt(r1035124);
double r1035126 = r1035117 - r1035125;
double r1035127 = 2.0;
double r1035128 = r1035127 * r1035120;
double r1035129 = r1035126 / r1035128;
double r1035130 = r1035127 * r1035122;
double r1035131 = r1035117 + r1035125;
double r1035132 = r1035130 / r1035131;
double r1035133 = r1035116 ? r1035129 : r1035132;
return r1035133;
}
double f(double a, double b, double c) {
double r1035134 = b;
double r1035135 = -2.1604745042066072e+157;
bool r1035136 = r1035134 <= r1035135;
double r1035137 = 0.0;
bool r1035138 = r1035134 >= r1035137;
double r1035139 = -r1035134;
double r1035140 = r1035134 * r1035134;
double r1035141 = 4.0;
double r1035142 = a;
double r1035143 = r1035141 * r1035142;
double r1035144 = c;
double r1035145 = r1035143 * r1035144;
double r1035146 = r1035140 - r1035145;
double r1035147 = sqrt(r1035146);
double r1035148 = r1035139 - r1035147;
double r1035149 = 2.0;
double r1035150 = r1035149 * r1035142;
double r1035151 = r1035148 / r1035150;
double r1035152 = r1035144 * r1035149;
double r1035153 = r1035142 * r1035144;
double r1035154 = r1035153 / r1035134;
double r1035155 = r1035149 * r1035154;
double r1035156 = r1035155 - r1035134;
double r1035157 = r1035139 + r1035156;
double r1035158 = r1035152 / r1035157;
double r1035159 = r1035138 ? r1035151 : r1035158;
double r1035160 = 3.7554680166001505e+146;
bool r1035161 = r1035134 <= r1035160;
double r1035162 = sqrt(r1035147);
double r1035163 = r1035162 * r1035162;
double r1035164 = r1035139 - r1035163;
double r1035165 = r1035164 / r1035150;
double r1035166 = r1035147 + r1035139;
double r1035167 = r1035152 / r1035166;
double r1035168 = r1035138 ? r1035165 : r1035167;
double r1035169 = cbrt(r1035134);
double r1035170 = r1035169 * r1035169;
double r1035171 = r1035142 / r1035170;
double r1035172 = cbrt(r1035171);
double r1035173 = r1035172 * r1035172;
double r1035174 = r1035144 / r1035169;
double r1035175 = r1035172 * r1035174;
double r1035176 = r1035173 * r1035175;
double r1035177 = r1035149 * r1035176;
double r1035178 = r1035134 - r1035177;
double r1035179 = r1035139 - r1035178;
double r1035180 = r1035179 / r1035150;
double r1035181 = r1035138 ? r1035180 : r1035167;
double r1035182 = r1035161 ? r1035168 : r1035181;
double r1035183 = r1035136 ? r1035159 : r1035182;
return r1035183;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.1604745042066072e+157Initial program 37.6
Taylor expanded around -inf 7.2
if -2.1604745042066072e+157 < b < 3.7554680166001505e+146Initial program 8.7
rmApplied add-sqr-sqrt8.8
if 3.7554680166001505e+146 < b Initial program 58.5
Taylor expanded around inf 10.9
rmApplied add-cube-cbrt10.9
Applied times-frac2.1
rmApplied add-cube-cbrt2.1
Applied associate-*l*2.1
Final simplification7.8
herbie shell --seed 2019135
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))