\begin{array}{l}
\mathbf{if}\;b \ge 0.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 -4.91962817906715367126033645969528543778 \cdot 10^{153}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-2 \cdot b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 929319867835151.5:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(2, a \cdot \frac{c}{b}, b \cdot -2\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r32558 = b;
double r32559 = 0.0;
bool r32560 = r32558 >= r32559;
double r32561 = 2.0;
double r32562 = c;
double r32563 = r32561 * r32562;
double r32564 = -r32558;
double r32565 = r32558 * r32558;
double r32566 = 4.0;
double r32567 = a;
double r32568 = r32566 * r32567;
double r32569 = r32568 * r32562;
double r32570 = r32565 - r32569;
double r32571 = sqrt(r32570);
double r32572 = r32564 - r32571;
double r32573 = r32563 / r32572;
double r32574 = r32564 + r32571;
double r32575 = r32561 * r32567;
double r32576 = r32574 / r32575;
double r32577 = r32560 ? r32573 : r32576;
return r32577;
}
double f(double a, double b, double c) {
double r32578 = b;
double r32579 = -4.919628179067154e+153;
bool r32580 = r32578 <= r32579;
double r32581 = 0.0;
bool r32582 = r32578 >= r32581;
double r32583 = 2.0;
double r32584 = c;
double r32585 = r32583 * r32584;
double r32586 = -r32578;
double r32587 = r32578 * r32578;
double r32588 = 4.0;
double r32589 = a;
double r32590 = r32588 * r32589;
double r32591 = r32590 * r32584;
double r32592 = r32587 - r32591;
double r32593 = sqrt(r32592);
double r32594 = r32586 - r32593;
double r32595 = r32585 / r32594;
double r32596 = -2.0;
double r32597 = r32596 * r32578;
double r32598 = r32597 / r32583;
double r32599 = r32598 / r32589;
double r32600 = r32582 ? r32595 : r32599;
double r32601 = 929319867835151.5;
bool r32602 = r32578 <= r32601;
double r32603 = cbrt(r32592);
double r32604 = fabs(r32603);
double r32605 = sqrt(r32603);
double r32606 = r32604 * r32605;
double r32607 = r32586 - r32606;
double r32608 = r32585 / r32607;
double r32609 = r32593 - r32578;
double r32610 = r32609 / r32583;
double r32611 = r32610 / r32589;
double r32612 = r32582 ? r32608 : r32611;
double r32613 = r32584 / r32578;
double r32614 = r32589 * r32613;
double r32615 = r32578 * r32596;
double r32616 = fma(r32583, r32614, r32615);
double r32617 = r32585 / r32616;
double r32618 = r32582 ? r32617 : r32611;
double r32619 = r32602 ? r32612 : r32618;
double r32620 = r32580 ? r32600 : r32619;
return r32620;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.919628179067154e+153Initial program 63.8
Simplified63.8
rmApplied add-cube-cbrt63.8
Applied sqrt-prod63.8
Applied fma-neg63.8
Taylor expanded around -inf 2.5
Simplified2.5
if -4.919628179067154e+153 < b < 929319867835151.5Initial program 9.4
Simplified9.4
rmApplied add-cube-cbrt9.6
Applied sqrt-prod9.6
Simplified9.6
if 929319867835151.5 < b Initial program 22.7
Simplified22.7
Taylor expanded around inf 8.2
Simplified8.2
rmApplied *-un-lft-identity8.2
Applied times-frac5.0
Simplified5.0
Final simplification7.4
herbie shell --seed 2019208 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))