\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 -1.7833607813175513 \cdot 10^{+59}:\\
\;\;\;\;\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{c \cdot 2}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 5.436017879840864 \cdot 10^{+134}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(\left(-4 \cdot a\right), c, \left(b \cdot b\right)\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\sqrt{\sqrt{\mathsf{fma}\left(\left(-4 \cdot a\right), c, \left(b \cdot b\right)\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(\left(-4 \cdot a\right), c, \left(b \cdot b\right)\right)}} - b} \cdot 2\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\sqrt{\mathsf{fma}\left(\left(-4 \cdot a\right), c, \left(b \cdot b\right)\right)} - b} \cdot 2\\
\end{array}double f(double a, double b, double c) {
double r1497084 = b;
double r1497085 = 0.0;
bool r1497086 = r1497084 >= r1497085;
double r1497087 = -r1497084;
double r1497088 = r1497084 * r1497084;
double r1497089 = 4.0;
double r1497090 = a;
double r1497091 = r1497089 * r1497090;
double r1497092 = c;
double r1497093 = r1497091 * r1497092;
double r1497094 = r1497088 - r1497093;
double r1497095 = sqrt(r1497094);
double r1497096 = r1497087 - r1497095;
double r1497097 = 2.0;
double r1497098 = r1497097 * r1497090;
double r1497099 = r1497096 / r1497098;
double r1497100 = r1497097 * r1497092;
double r1497101 = r1497087 + r1497095;
double r1497102 = r1497100 / r1497101;
double r1497103 = r1497086 ? r1497099 : r1497102;
return r1497103;
}
double f(double a, double b, double c) {
double r1497104 = b;
double r1497105 = -1.7833607813175513e+59;
bool r1497106 = r1497104 <= r1497105;
double r1497107 = 0.0;
bool r1497108 = r1497104 >= r1497107;
double r1497109 = -r1497104;
double r1497110 = r1497104 * r1497104;
double r1497111 = 4.0;
double r1497112 = a;
double r1497113 = r1497111 * r1497112;
double r1497114 = c;
double r1497115 = r1497113 * r1497114;
double r1497116 = r1497110 - r1497115;
double r1497117 = sqrt(r1497116);
double r1497118 = r1497109 - r1497117;
double r1497119 = 2.0;
double r1497120 = r1497119 * r1497112;
double r1497121 = r1497118 / r1497120;
double r1497122 = r1497114 * r1497119;
double r1497123 = r1497112 * r1497114;
double r1497124 = r1497123 / r1497104;
double r1497125 = r1497119 * r1497124;
double r1497126 = r1497125 - r1497104;
double r1497127 = r1497109 + r1497126;
double r1497128 = r1497122 / r1497127;
double r1497129 = r1497108 ? r1497121 : r1497128;
double r1497130 = 5.436017879840864e+134;
bool r1497131 = r1497104 <= r1497130;
double r1497132 = -4.0;
double r1497133 = r1497132 * r1497112;
double r1497134 = fma(r1497133, r1497114, r1497110);
double r1497135 = sqrt(r1497134);
double r1497136 = r1497109 - r1497135;
double r1497137 = r1497136 / r1497120;
double r1497138 = sqrt(r1497135);
double r1497139 = r1497138 * r1497138;
double r1497140 = r1497139 - r1497104;
double r1497141 = r1497114 / r1497140;
double r1497142 = r1497141 * r1497119;
double r1497143 = r1497108 ? r1497137 : r1497142;
double r1497144 = r1497114 / r1497104;
double r1497145 = r1497104 / r1497112;
double r1497146 = r1497144 - r1497145;
double r1497147 = r1497135 - r1497104;
double r1497148 = r1497114 / r1497147;
double r1497149 = r1497148 * r1497119;
double r1497150 = r1497108 ? r1497146 : r1497149;
double r1497151 = r1497131 ? r1497143 : r1497150;
double r1497152 = r1497106 ? r1497129 : r1497151;
return r1497152;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.7833607813175513e+59Initial program 26.6
Taylor expanded around -inf 7.8
if -1.7833607813175513e+59 < b < 5.436017879840864e+134Initial program 9.1
Simplified9.1
rmApplied add-sqr-sqrt9.2
if 5.436017879840864e+134 < b Initial program 53.5
Simplified53.5
Taylor expanded around inf 3.5
Final simplification8.1
herbie shell --seed 2019121 +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)))))))