\begin{array}{l}
\mathbf{if}\;b \ge 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 2.1331841130802315 \cdot 10^{+118}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(b + \left(-b\right)\right) + \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + \left(b + \left(-b\right)\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r1264242 = b;
double r1264243 = 0.0;
bool r1264244 = r1264242 >= r1264243;
double r1264245 = 2.0;
double r1264246 = c;
double r1264247 = r1264245 * r1264246;
double r1264248 = -r1264242;
double r1264249 = r1264242 * r1264242;
double r1264250 = 4.0;
double r1264251 = a;
double r1264252 = r1264250 * r1264251;
double r1264253 = r1264252 * r1264246;
double r1264254 = r1264249 - r1264253;
double r1264255 = sqrt(r1264254);
double r1264256 = r1264248 - r1264255;
double r1264257 = r1264247 / r1264256;
double r1264258 = r1264248 + r1264255;
double r1264259 = r1264245 * r1264251;
double r1264260 = r1264258 / r1264259;
double r1264261 = r1264244 ? r1264257 : r1264260;
return r1264261;
}
double f(double a, double b, double c) {
double r1264262 = b;
double r1264263 = 2.1331841130802315e+118;
bool r1264264 = r1264262 <= r1264263;
double r1264265 = 0.0;
bool r1264266 = r1264262 >= r1264265;
double r1264267 = 2.0;
double r1264268 = c;
double r1264269 = r1264267 * r1264268;
double r1264270 = -r1264262;
double r1264271 = -4.0;
double r1264272 = a;
double r1264273 = r1264272 * r1264268;
double r1264274 = r1264262 * r1264262;
double r1264275 = fma(r1264271, r1264273, r1264274);
double r1264276 = sqrt(r1264275);
double r1264277 = r1264270 - r1264276;
double r1264278 = r1264269 / r1264277;
double r1264279 = r1264262 + r1264270;
double r1264280 = r1264271 * r1264268;
double r1264281 = fma(r1264280, r1264272, r1264274);
double r1264282 = sqrt(r1264281);
double r1264283 = r1264282 - r1264262;
double r1264284 = sqrt(r1264283);
double r1264285 = r1264284 * r1264284;
double r1264286 = r1264279 + r1264285;
double r1264287 = r1264267 * r1264272;
double r1264288 = r1264286 / r1264287;
double r1264289 = r1264266 ? r1264278 : r1264288;
double r1264290 = r1264270 - r1264262;
double r1264291 = r1264269 / r1264290;
double r1264292 = r1264283 + r1264279;
double r1264293 = r1264292 / r1264287;
double r1264294 = r1264266 ? r1264291 : r1264293;
double r1264295 = r1264264 ? r1264289 : r1264294;
return r1264295;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2.1331841130802315e+118Initial program 15.3
Simplified15.3
rmApplied add-cube-cbrt15.4
Applied add-cube-cbrt15.7
Applied prod-diff15.7
Simplified15.3
Simplified15.3
rmApplied add-sqr-sqrt15.4
if 2.1331841130802315e+118 < b Initial program 33.7
Simplified33.7
rmApplied add-cube-cbrt33.7
Applied add-cube-cbrt33.7
Applied prod-diff33.7
Simplified33.7
Simplified33.7
Taylor expanded around 0 2.4
Final simplification12.6
herbie shell --seed 2019119 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))