\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -3.3646042166231086 \cdot 10^{+152}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;-1.0 \cdot \frac{c}{b}\\
\end{array}\\
\mathbf{elif}\;b \le 3.7351193763925545 \cdot 10^{-261}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}{2.0 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}\\
\end{array}\\
\mathbf{elif}\;b \le 4.237649019836543 \cdot 10^{+103}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}{2.0 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{\left(\sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)} \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}\right) \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\
\end{array}double f(double a, double b, double c) {
double r1434190 = b;
double r1434191 = 0.0;
bool r1434192 = r1434190 >= r1434191;
double r1434193 = -r1434190;
double r1434194 = r1434190 * r1434190;
double r1434195 = 4.0;
double r1434196 = a;
double r1434197 = r1434195 * r1434196;
double r1434198 = c;
double r1434199 = r1434197 * r1434198;
double r1434200 = r1434194 - r1434199;
double r1434201 = sqrt(r1434200);
double r1434202 = r1434193 - r1434201;
double r1434203 = 2.0;
double r1434204 = r1434203 * r1434196;
double r1434205 = r1434202 / r1434204;
double r1434206 = r1434203 * r1434198;
double r1434207 = r1434193 + r1434201;
double r1434208 = r1434206 / r1434207;
double r1434209 = r1434192 ? r1434205 : r1434208;
return r1434209;
}
double f(double a, double b, double c) {
double r1434210 = b;
double r1434211 = -3.3646042166231086e+152;
bool r1434212 = r1434210 <= r1434211;
double r1434213 = 0.0;
bool r1434214 = r1434210 >= r1434213;
double r1434215 = 1.0;
double r1434216 = c;
double r1434217 = r1434216 / r1434210;
double r1434218 = a;
double r1434219 = r1434210 / r1434218;
double r1434220 = r1434217 - r1434219;
double r1434221 = r1434215 * r1434220;
double r1434222 = -1.0;
double r1434223 = r1434222 * r1434217;
double r1434224 = r1434214 ? r1434221 : r1434223;
double r1434225 = 3.7351193763925545e-261;
bool r1434226 = r1434210 <= r1434225;
double r1434227 = 4.0;
double r1434228 = r1434218 * r1434227;
double r1434229 = r1434216 * r1434228;
double r1434230 = r1434210 * r1434210;
double r1434231 = r1434230 - r1434230;
double r1434232 = r1434229 + r1434231;
double r1434233 = -r1434210;
double r1434234 = r1434230 - r1434229;
double r1434235 = sqrt(r1434234);
double r1434236 = r1434233 + r1434235;
double r1434237 = r1434232 / r1434236;
double r1434238 = 2.0;
double r1434239 = r1434238 * r1434218;
double r1434240 = r1434237 / r1434239;
double r1434241 = r1434238 * r1434216;
double r1434242 = r1434241 / r1434236;
double r1434243 = r1434214 ? r1434240 : r1434242;
double r1434244 = 4.237649019836543e+103;
bool r1434245 = r1434210 <= r1434244;
double r1434246 = r1434233 - r1434235;
double r1434247 = r1434246 / r1434239;
double r1434248 = r1434232 / r1434246;
double r1434249 = r1434241 / r1434248;
double r1434250 = r1434214 ? r1434247 : r1434249;
double r1434251 = cbrt(r1434234);
double r1434252 = r1434251 * r1434251;
double r1434253 = r1434252 * r1434251;
double r1434254 = sqrt(r1434253);
double r1434255 = r1434233 + r1434254;
double r1434256 = r1434241 / r1434255;
double r1434257 = r1434214 ? r1434221 : r1434256;
double r1434258 = r1434245 ? r1434250 : r1434257;
double r1434259 = r1434226 ? r1434243 : r1434258;
double r1434260 = r1434212 ? r1434224 : r1434259;
return r1434260;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.3646042166231086e+152Initial program 38.4
Taylor expanded around inf 38.4
Simplified38.4
Taylor expanded around 0 38.4
Simplified38.4
rmApplied associate-/l*38.4
Simplified38.4
Taylor expanded around -inf 1.7
if -3.3646042166231086e+152 < b < 3.7351193763925545e-261Initial program 8.2
rmApplied flip--8.2
Simplified8.2
if 3.7351193763925545e-261 < b < 4.237649019836543e+103Initial program 8.4
rmApplied flip-+8.4
Simplified8.4
if 4.237649019836543e+103 < b Initial program 47.5
Taylor expanded around inf 10.8
Simplified3.5
Taylor expanded around 0 3.2
Simplified3.2
rmApplied add-cube-cbrt3.2
Final simplification6.3
herbie shell --seed 2019165 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))