\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 -3.70257086865924317 \cdot 10^{71}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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(\left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{\sqrt[3]{c} \cdot \sqrt[3]{c}}{\sqrt[3]{1}}\right) \cdot \frac{\sqrt[3]{c}}{\sqrt[3]{b}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le -3.03199526135246486 \cdot 10^{-294}:\\
\;\;\;\;\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 3.9225434329697108 \cdot 10^{140}:\\
\;\;\;\;\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}{\frac{4 \cdot \left(a \cdot c\right) + 0}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\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 r31147 = b;
double r31148 = 0.0;
bool r31149 = r31147 >= r31148;
double r31150 = -r31147;
double r31151 = r31147 * r31147;
double r31152 = 4.0;
double r31153 = a;
double r31154 = r31152 * r31153;
double r31155 = c;
double r31156 = r31154 * r31155;
double r31157 = r31151 - r31156;
double r31158 = sqrt(r31157);
double r31159 = r31150 - r31158;
double r31160 = 2.0;
double r31161 = r31160 * r31153;
double r31162 = r31159 / r31161;
double r31163 = r31160 * r31155;
double r31164 = r31150 + r31158;
double r31165 = r31163 / r31164;
double r31166 = r31149 ? r31162 : r31165;
return r31166;
}
double f(double a, double b, double c) {
double r31167 = b;
double r31168 = -3.702570868659243e+71;
bool r31169 = r31167 <= r31168;
double r31170 = 0.0;
bool r31171 = r31167 >= r31170;
double r31172 = -r31167;
double r31173 = r31167 * r31167;
double r31174 = 4.0;
double r31175 = a;
double r31176 = r31174 * r31175;
double r31177 = c;
double r31178 = r31176 * r31177;
double r31179 = r31173 - r31178;
double r31180 = sqrt(r31179);
double r31181 = sqrt(r31180);
double r31182 = r31181 * r31181;
double r31183 = r31172 - r31182;
double r31184 = 2.0;
double r31185 = r31184 * r31175;
double r31186 = r31183 / r31185;
double r31187 = r31184 * r31177;
double r31188 = cbrt(r31167);
double r31189 = r31188 * r31188;
double r31190 = r31175 / r31189;
double r31191 = cbrt(r31177);
double r31192 = r31191 * r31191;
double r31193 = 1.0;
double r31194 = cbrt(r31193);
double r31195 = r31192 / r31194;
double r31196 = r31190 * r31195;
double r31197 = r31191 / r31188;
double r31198 = r31196 * r31197;
double r31199 = r31184 * r31198;
double r31200 = r31199 - r31167;
double r31201 = r31172 + r31200;
double r31202 = r31187 / r31201;
double r31203 = r31171 ? r31186 : r31202;
double r31204 = -3.031995261352465e-294;
bool r31205 = r31167 <= r31204;
double r31206 = r31175 * r31177;
double r31207 = r31206 / r31167;
double r31208 = r31184 * r31207;
double r31209 = r31167 - r31208;
double r31210 = r31172 - r31209;
double r31211 = r31210 / r31185;
double r31212 = r31172 + r31180;
double r31213 = r31187 / r31212;
double r31214 = r31171 ? r31211 : r31213;
double r31215 = 3.922543432969711e+140;
bool r31216 = r31167 <= r31215;
double r31217 = r31172 - r31180;
double r31218 = r31217 / r31185;
double r31219 = r31174 * r31206;
double r31220 = 0.0;
double r31221 = r31219 + r31220;
double r31222 = r31221 / r31217;
double r31223 = r31187 / r31222;
double r31224 = r31171 ? r31218 : r31223;
double r31225 = r31216 ? r31224 : r31214;
double r31226 = r31205 ? r31214 : r31225;
double r31227 = r31169 ? r31203 : r31226;
return r31227;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.702570868659243e+71Initial program 27.1
Taylor expanded around -inf 6.9
rmApplied add-cube-cbrt6.9
Applied times-frac3.3
rmApplied *-un-lft-identity3.3
Applied cbrt-prod3.3
Applied add-cube-cbrt3.3
Applied times-frac3.3
Applied associate-*r*3.3
rmApplied add-sqr-sqrt3.3
Applied sqrt-prod3.3
if -3.702570868659243e+71 < b < -3.031995261352465e-294 or 3.922543432969711e+140 < b Initial program 24.4
Taylor expanded around inf 9.7
if -3.031995261352465e-294 < b < 3.922543432969711e+140Initial program 8.9
rmApplied flip-+8.9
Simplified8.9
Final simplification7.7
herbie shell --seed 2020089 +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)))))))