\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.33861703157570726 \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.56852622064957373 \cdot 10^{69}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{b} \cdot \sqrt[3]{b}, -\sqrt[3]{b}, -\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{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:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}double f(double a, double b, double c) {
double r105 = b;
double r106 = 0.0;
bool r107 = r105 >= r106;
double r108 = -r105;
double r109 = r105 * r105;
double r110 = 4.0;
double r111 = a;
double r112 = r110 * r111;
double r113 = c;
double r114 = r112 * r113;
double r115 = r109 - r114;
double r116 = sqrt(r115);
double r117 = r108 - r116;
double r118 = 2.0;
double r119 = r118 * r111;
double r120 = r117 / r119;
double r121 = r118 * r113;
double r122 = r108 + r116;
double r123 = r121 / r122;
double r124 = r107 ? r120 : r123;
return r124;
}
double f(double a, double b, double c) {
double r125 = b;
double r126 = -1.3386170315757073e+154;
bool r127 = r125 <= r126;
double r128 = 0.0;
bool r129 = r125 >= r128;
double r130 = -r125;
double r131 = r125 * r125;
double r132 = 4.0;
double r133 = a;
double r134 = r132 * r133;
double r135 = c;
double r136 = r134 * r135;
double r137 = r131 - r136;
double r138 = sqrt(r137);
double r139 = r130 - r138;
double r140 = 2.0;
double r141 = r140 * r133;
double r142 = r139 / r141;
double r143 = r140 * r135;
double r144 = r133 * r135;
double r145 = r144 / r125;
double r146 = r140 * r145;
double r147 = r146 - r125;
double r148 = r130 + r147;
double r149 = r143 / r148;
double r150 = r129 ? r142 : r149;
double r151 = 2.5685262206495737e+69;
bool r152 = r125 <= r151;
double r153 = cbrt(r125);
double r154 = r153 * r153;
double r155 = -r153;
double r156 = -r138;
double r157 = fma(r154, r155, r156);
double r158 = r157 / r141;
double r159 = r130 + r138;
double r160 = r143 / r159;
double r161 = r129 ? r158 : r160;
double r162 = r125 - r146;
double r163 = r130 - r162;
double r164 = r163 / r141;
double r165 = cbrt(r137);
double r166 = fabs(r165);
double r167 = sqrt(r165);
double r168 = r166 * r167;
double r169 = r130 + r168;
double r170 = r143 / r169;
double r171 = r129 ? r164 : r170;
double r172 = r152 ? r161 : r171;
double r173 = r127 ? r150 : r172;
return r173;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3386170315757073e+154Initial program 37.5
Taylor expanded around -inf 6.8
if -1.3386170315757073e+154 < b < 2.5685262206495737e+69Initial program 8.7
rmApplied add-cube-cbrt8.8
Applied distribute-rgt-neg-in8.8
Applied fma-neg8.8
if 2.5685262206495737e+69 < b Initial program 41.4
rmApplied add-cube-cbrt41.4
Applied sqrt-prod41.4
Simplified41.4
Taylor expanded around inf 11.0
Final simplification8.9
herbie shell --seed 2020025 +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)))))))