\begin{array}{l}
\mathbf{if}\;b \ge 0.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 -4.285271160992641813120516826275381392108 \cdot 10^{136}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - e^{\log \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \left(\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt[3]{\frac{b}{c}} \cdot \sqrt[3]{\frac{b}{c}}} \cdot \frac{\sqrt[3]{a}}{\sqrt[3]{\frac{b}{c}}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le -1.609290623087753495768254237988414450863 \cdot 10^{-284}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}\\
\mathbf{elif}\;b \le 2.678238127073728805877873599258558355989 \cdot 10^{53}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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) + \left(2 \cdot \left(\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt[3]{\frac{b}{c}} \cdot e^{\log \left(\sqrt[3]{\frac{b}{c}}\right)}} \cdot \frac{\sqrt[3]{a}}{\sqrt[3]{\frac{b}{c}}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}double f(double a, double b, double c) {
double r51140 = b;
double r51141 = 0.0;
bool r51142 = r51140 >= r51141;
double r51143 = -r51140;
double r51144 = r51140 * r51140;
double r51145 = 4.0;
double r51146 = a;
double r51147 = r51145 * r51146;
double r51148 = c;
double r51149 = r51147 * r51148;
double r51150 = r51144 - r51149;
double r51151 = sqrt(r51150);
double r51152 = r51143 - r51151;
double r51153 = 2.0;
double r51154 = r51153 * r51146;
double r51155 = r51152 / r51154;
double r51156 = r51153 * r51148;
double r51157 = r51143 + r51151;
double r51158 = r51156 / r51157;
double r51159 = r51142 ? r51155 : r51158;
return r51159;
}
double f(double a, double b, double c) {
double r51160 = b;
double r51161 = -4.285271160992642e+136;
bool r51162 = r51160 <= r51161;
double r51163 = 0.0;
bool r51164 = r51160 >= r51163;
double r51165 = -r51160;
double r51166 = r51160 * r51160;
double r51167 = 4.0;
double r51168 = a;
double r51169 = r51167 * r51168;
double r51170 = c;
double r51171 = r51169 * r51170;
double r51172 = r51166 - r51171;
double r51173 = sqrt(r51172);
double r51174 = log(r51173);
double r51175 = exp(r51174);
double r51176 = r51165 - r51175;
double r51177 = 2.0;
double r51178 = r51177 * r51168;
double r51179 = r51176 / r51178;
double r51180 = r51177 * r51170;
double r51181 = cbrt(r51168);
double r51182 = r51181 * r51181;
double r51183 = r51160 / r51170;
double r51184 = cbrt(r51183);
double r51185 = r51184 * r51184;
double r51186 = r51182 / r51185;
double r51187 = r51181 / r51184;
double r51188 = r51186 * r51187;
double r51189 = r51177 * r51188;
double r51190 = r51189 - r51160;
double r51191 = r51165 + r51190;
double r51192 = r51180 / r51191;
double r51193 = r51164 ? r51179 : r51192;
double r51194 = -1.6092906230877535e-284;
bool r51195 = r51160 <= r51194;
double r51196 = r51168 * r51170;
double r51197 = r51196 / r51160;
double r51198 = r51177 * r51197;
double r51199 = r51160 - r51198;
double r51200 = r51165 - r51199;
double r51201 = r51200 / r51178;
double r51202 = r51165 + r51173;
double r51203 = r51180 / r51202;
double r51204 = r51164 ? r51201 : r51203;
double r51205 = 2.678238127073729e+53;
bool r51206 = r51160 <= r51205;
double r51207 = r51165 - r51173;
double r51208 = r51207 / r51178;
double r51209 = log(r51184);
double r51210 = exp(r51209);
double r51211 = r51184 * r51210;
double r51212 = r51182 / r51211;
double r51213 = r51212 * r51187;
double r51214 = r51177 * r51213;
double r51215 = r51214 - r51160;
double r51216 = r51165 + r51215;
double r51217 = r51180 / r51216;
double r51218 = r51164 ? r51208 : r51217;
double r51219 = r51206 ? r51218 : r51204;
double r51220 = r51195 ? r51204 : r51219;
double r51221 = r51162 ? r51193 : r51220;
return r51221;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.285271160992642e+136Initial program 34.3
Taylor expanded around -inf 5.9
rmApplied associate-/l*1.6
rmApplied add-cube-cbrt1.6
Applied add-cube-cbrt1.6
Applied times-frac1.6
rmApplied add-exp-log1.6
if -4.285271160992642e+136 < b < -1.6092906230877535e-284 or 2.678238127073729e+53 < b Initial program 19.2
Taylor expanded around inf 9.2
if -1.6092906230877535e-284 < b < 2.678238127073729e+53Initial program 9.2
Taylor expanded around -inf 11.3
rmApplied associate-/l*11.3
rmApplied add-cube-cbrt11.3
Applied add-cube-cbrt11.3
Applied times-frac11.3
rmApplied add-exp-log11.3
Final simplification8.3
herbie shell --seed 2019362 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))