\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 -1.33791852996056488 \cdot 10^{154}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 6.7711658147871089 \cdot 10^{125}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r40116 = b;
double r40117 = 0.0;
bool r40118 = r40116 >= r40117;
double r40119 = 2.0;
double r40120 = c;
double r40121 = r40119 * r40120;
double r40122 = -r40116;
double r40123 = r40116 * r40116;
double r40124 = 4.0;
double r40125 = a;
double r40126 = r40124 * r40125;
double r40127 = r40126 * r40120;
double r40128 = r40123 - r40127;
double r40129 = sqrt(r40128);
double r40130 = r40122 - r40129;
double r40131 = r40121 / r40130;
double r40132 = r40122 + r40129;
double r40133 = r40119 * r40125;
double r40134 = r40132 / r40133;
double r40135 = r40118 ? r40131 : r40134;
return r40135;
}
double f(double a, double b, double c) {
double r40136 = b;
double r40137 = -1.3379185299605649e+154;
bool r40138 = r40136 <= r40137;
double r40139 = 0.0;
bool r40140 = r40136 >= r40139;
double r40141 = 2.0;
double r40142 = c;
double r40143 = r40141 * r40142;
double r40144 = -r40136;
double r40145 = r40136 * r40136;
double r40146 = 4.0;
double r40147 = a;
double r40148 = r40146 * r40147;
double r40149 = r40148 * r40142;
double r40150 = r40145 - r40149;
double r40151 = sqrt(r40150);
double r40152 = r40144 - r40151;
double r40153 = r40143 / r40152;
double r40154 = r40147 * r40142;
double r40155 = r40154 / r40136;
double r40156 = r40141 * r40155;
double r40157 = r40156 - r40136;
double r40158 = r40144 + r40157;
double r40159 = r40141 * r40147;
double r40160 = r40158 / r40159;
double r40161 = r40140 ? r40153 : r40160;
double r40162 = 6.771165814787109e+125;
bool r40163 = r40136 <= r40162;
double r40164 = sqrt(r40151);
double r40165 = r40164 * r40164;
double r40166 = r40144 - r40165;
double r40167 = r40143 / r40166;
double r40168 = r40144 + r40151;
double r40169 = r40168 / r40159;
double r40170 = r40140 ? r40167 : r40169;
double r40171 = 2.0;
double r40172 = r40171 * r40136;
double r40173 = r40156 - r40172;
double r40174 = r40143 / r40173;
double r40175 = r40140 ? r40174 : r40169;
double r40176 = r40163 ? r40170 : r40175;
double r40177 = r40138 ? r40161 : r40176;
return r40177;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3379185299605649e+154Initial program 64.0
Taylor expanded around -inf 11.4
if -1.3379185299605649e+154 < b < 6.771165814787109e+125Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 6.771165814787109e+125 < b Initial program 31.3
rmApplied add-sqr-sqrt31.3
Applied sqrt-prod31.3
Taylor expanded around inf 5.7
Final simplification8.5
herbie shell --seed 2020083 +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))))