\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.01827746078287 \cdot 10^{-310}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)} - b}{2}}\\
\end{array}\\
\mathbf{elif}\;b \le 2.559678284282607 \cdot 10^{+69}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{0}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot \sqrt{2}}{\frac{\sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)} - b}{\sqrt{2}}}\\
\end{array}double f(double a, double b, double c) {
double r626144 = b;
double r626145 = 0.0;
bool r626146 = r626144 >= r626145;
double r626147 = -r626144;
double r626148 = r626144 * r626144;
double r626149 = 4.0;
double r626150 = a;
double r626151 = r626149 * r626150;
double r626152 = c;
double r626153 = r626151 * r626152;
double r626154 = r626148 - r626153;
double r626155 = sqrt(r626154);
double r626156 = r626147 - r626155;
double r626157 = 2.0;
double r626158 = r626157 * r626150;
double r626159 = r626156 / r626158;
double r626160 = r626157 * r626152;
double r626161 = r626147 + r626155;
double r626162 = r626160 / r626161;
double r626163 = r626146 ? r626159 : r626162;
return r626163;
}
double f(double a, double b, double c) {
double r626164 = b;
double r626165 = 2.01827746078287e-310;
bool r626166 = r626164 <= r626165;
double r626167 = 0.0;
bool r626168 = r626164 >= r626167;
double r626169 = -r626164;
double r626170 = r626169 - r626164;
double r626171 = 2.0;
double r626172 = a;
double r626173 = r626171 * r626172;
double r626174 = r626170 / r626173;
double r626175 = c;
double r626176 = -4.0;
double r626177 = r626176 * r626172;
double r626178 = r626164 * r626164;
double r626179 = fma(r626175, r626177, r626178);
double r626180 = sqrt(r626179);
double r626181 = r626180 - r626164;
double r626182 = r626181 / r626171;
double r626183 = r626175 / r626182;
double r626184 = r626168 ? r626174 : r626183;
double r626185 = 2.559678284282607e+69;
bool r626186 = r626164 <= r626185;
double r626187 = r626169 - r626180;
double r626188 = r626187 / r626173;
double r626189 = r626175 / r626167;
double r626190 = r626168 ? r626188 : r626189;
double r626191 = r626175 / r626164;
double r626192 = r626164 / r626172;
double r626193 = r626191 - r626192;
double r626194 = sqrt(r626171);
double r626195 = r626175 * r626194;
double r626196 = r626181 / r626194;
double r626197 = r626195 / r626196;
double r626198 = r626168 ? r626193 : r626197;
double r626199 = r626186 ? r626190 : r626198;
double r626200 = r626166 ? r626184 : r626199;
return r626200;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2.01827746078287e-310Initial program 16.8
Simplified16.8
Taylor expanded around 0 16.8
if 2.01827746078287e-310 < b < 2.559678284282607e+69Initial program 9.2
Simplified9.2
Taylor expanded around 0 9.2
if 2.559678284282607e+69 < b Initial program 39.0
Simplified38.9
Taylor expanded around inf 9.3
Simplified4.9
Taylor expanded around -inf 4.8
rmApplied add-sqr-sqrt4.8
Applied *-un-lft-identity4.8
Applied *-un-lft-identity4.8
Applied distribute-lft-out--4.8
Applied times-frac4.8
Applied associate-/r*4.8
Simplified4.8
Final simplification12.6
herbie shell --seed 2019152 +o rules:numerics
(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)))))))