\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 -5.105369019268963816293244653075052742799 \cdot 10^{141}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 5.139720957774800459105165687985873103887 \cdot 10^{144}:\\
\;\;\;\;\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|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{\sqrt{\left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}} - b}{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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r31104 = b;
double r31105 = 0.0;
bool r31106 = r31104 >= r31105;
double r31107 = 2.0;
double r31108 = c;
double r31109 = r31107 * r31108;
double r31110 = -r31104;
double r31111 = r31104 * r31104;
double r31112 = 4.0;
double r31113 = a;
double r31114 = r31112 * r31113;
double r31115 = r31114 * r31108;
double r31116 = r31111 - r31115;
double r31117 = sqrt(r31116);
double r31118 = r31110 - r31117;
double r31119 = r31109 / r31118;
double r31120 = r31110 + r31117;
double r31121 = r31107 * r31113;
double r31122 = r31120 / r31121;
double r31123 = r31106 ? r31119 : r31122;
return r31123;
}
double f(double a, double b, double c) {
double r31124 = b;
double r31125 = -5.105369019268964e+141;
bool r31126 = r31124 <= r31125;
double r31127 = 0.0;
bool r31128 = r31124 >= r31127;
double r31129 = 2.0;
double r31130 = c;
double r31131 = r31129 * r31130;
double r31132 = -r31124;
double r31133 = r31124 * r31124;
double r31134 = 4.0;
double r31135 = a;
double r31136 = r31134 * r31135;
double r31137 = r31136 * r31130;
double r31138 = r31133 - r31137;
double r31139 = sqrt(r31138);
double r31140 = r31132 - r31139;
double r31141 = r31131 / r31140;
double r31142 = r31135 * r31130;
double r31143 = r31142 / r31124;
double r31144 = r31129 * r31143;
double r31145 = 2.0;
double r31146 = r31145 * r31124;
double r31147 = r31144 - r31146;
double r31148 = r31129 * r31135;
double r31149 = r31147 / r31148;
double r31150 = r31128 ? r31141 : r31149;
double r31151 = 5.1397209577748005e+144;
bool r31152 = r31124 <= r31151;
double r31153 = cbrt(r31138);
double r31154 = fabs(r31153);
double r31155 = cbrt(r31139);
double r31156 = r31155 * r31155;
double r31157 = r31156 * r31155;
double r31158 = sqrt(r31157);
double r31159 = sqrt(r31139);
double r31160 = r31158 * r31159;
double r31161 = cbrt(r31160);
double r31162 = r31161 * r31155;
double r31163 = sqrt(r31162);
double r31164 = r31154 * r31163;
double r31165 = r31164 - r31124;
double r31166 = r31165 / r31148;
double r31167 = r31128 ? r31141 : r31166;
double r31168 = r31131 / r31147;
double r31169 = r31139 - r31124;
double r31170 = r31169 / r31148;
double r31171 = r31128 ? r31168 : r31170;
double r31172 = r31152 ? r31167 : r31171;
double r31173 = r31126 ? r31150 : r31172;
return r31173;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.105369019268964e+141Initial program 60.4
Simplified60.4
Taylor expanded around -inf 10.7
if -5.105369019268964e+141 < b < 5.1397209577748005e+144Initial program 8.2
Simplified8.2
rmApplied add-cube-cbrt8.4
Applied sqrt-prod8.4
Simplified8.4
rmApplied add-sqr-sqrt8.4
Applied cbrt-prod8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.4
rmApplied add-cube-cbrt8.4
if 5.1397209577748005e+144 < b Initial program 36.4
Simplified36.4
Taylor expanded around inf 6.1
Final simplification8.3
herbie shell --seed 2019325
(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))))