\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 -4.82289647433212 \cdot 10^{+153}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{a}{b} \cdot c - b\right) \cdot 2}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \le 4.866803345215698 \cdot 10^{+83}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4\right)} \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4\right)}} \cdot \sqrt{\sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)} + \left(-b\right)}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\left(b \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot \left(b \cdot b\right)\right) - \left(\left(c \cdot \left(a \cdot 4\right)\right) \cdot \left(c \cdot \left(a \cdot 4\right)\right)\right) \cdot \left(c \cdot \left(a \cdot 4\right)\right)}}{\sqrt{\left(b \cdot b\right) \cdot \left(b \cdot b\right) + \left(\left(b \cdot b\right) \cdot \left(c \cdot \left(a \cdot 4\right)\right) + \left(c \cdot \left(a \cdot 4\right)\right) \cdot \left(c \cdot \left(a \cdot 4\right)\right)\right)}} + \left(-b\right)}{a \cdot 2}\\
\end{array}double f(double a, double b, double c) {
double r722097 = b;
double r722098 = 0.0;
bool r722099 = r722097 >= r722098;
double r722100 = 2.0;
double r722101 = c;
double r722102 = r722100 * r722101;
double r722103 = -r722097;
double r722104 = r722097 * r722097;
double r722105 = 4.0;
double r722106 = a;
double r722107 = r722105 * r722106;
double r722108 = r722107 * r722101;
double r722109 = r722104 - r722108;
double r722110 = sqrt(r722109);
double r722111 = r722103 - r722110;
double r722112 = r722102 / r722111;
double r722113 = r722103 + r722110;
double r722114 = r722100 * r722106;
double r722115 = r722113 / r722114;
double r722116 = r722099 ? r722112 : r722115;
return r722116;
}
double f(double a, double b, double c) {
double r722117 = b;
double r722118 = -4.82289647433212e+153;
bool r722119 = r722117 <= r722118;
double r722120 = 0.0;
bool r722121 = r722117 >= r722120;
double r722122 = 2.0;
double r722123 = c;
double r722124 = r722122 * r722123;
double r722125 = a;
double r722126 = r722117 / r722123;
double r722127 = r722125 / r722126;
double r722128 = r722127 - r722117;
double r722129 = r722122 * r722128;
double r722130 = r722124 / r722129;
double r722131 = r722125 / r722117;
double r722132 = r722131 * r722123;
double r722133 = r722132 - r722117;
double r722134 = r722133 * r722122;
double r722135 = r722125 * r722122;
double r722136 = r722134 / r722135;
double r722137 = r722121 ? r722130 : r722136;
double r722138 = 4.866803345215698e+83;
bool r722139 = r722117 <= r722138;
double r722140 = -r722117;
double r722141 = r722117 * r722117;
double r722142 = 4.0;
double r722143 = r722125 * r722142;
double r722144 = r722123 * r722143;
double r722145 = r722141 - r722144;
double r722146 = cbrt(r722145);
double r722147 = r722146 * r722146;
double r722148 = sqrt(r722147);
double r722149 = sqrt(r722146);
double r722150 = r722148 * r722149;
double r722151 = r722140 - r722150;
double r722152 = r722124 / r722151;
double r722153 = sqrt(r722145);
double r722154 = r722153 + r722140;
double r722155 = r722154 / r722135;
double r722156 = r722121 ? r722152 : r722155;
double r722157 = r722117 * r722141;
double r722158 = r722157 * r722157;
double r722159 = r722144 * r722144;
double r722160 = r722159 * r722144;
double r722161 = r722158 - r722160;
double r722162 = sqrt(r722161);
double r722163 = r722141 * r722141;
double r722164 = r722141 * r722144;
double r722165 = r722164 + r722159;
double r722166 = r722163 + r722165;
double r722167 = sqrt(r722166);
double r722168 = r722162 / r722167;
double r722169 = r722168 + r722140;
double r722170 = r722169 / r722135;
double r722171 = r722121 ? r722130 : r722170;
double r722172 = r722139 ? r722156 : r722171;
double r722173 = r722119 ? r722137 : r722172;
return r722173;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.82289647433212e+153Initial program 60.9
Taylor expanded around inf 60.9
Simplified60.9
rmApplied add-sqr-sqrt60.9
Applied sqrt-prod60.9
Taylor expanded around -inf 11.4
Simplified2.5
if -4.82289647433212e+153 < b < 4.866803345215698e+83Initial program 8.7
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
if 4.866803345215698e+83 < b Initial program 28.8
Taylor expanded around inf 6.5
Simplified2.9
rmApplied flip3--2.9
Applied sqrt-div2.9
Simplified2.9
Final simplification6.6
herbie shell --seed 2019142
(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))))