\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 -2.70313261124652268 \cdot 10^{141}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-2 \cdot b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.0280952669618129 \cdot 10^{109}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}, \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}, -b\right)}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r29069 = b;
double r29070 = 0.0;
bool r29071 = r29069 >= r29070;
double r29072 = 2.0;
double r29073 = c;
double r29074 = r29072 * r29073;
double r29075 = -r29069;
double r29076 = r29069 * r29069;
double r29077 = 4.0;
double r29078 = a;
double r29079 = r29077 * r29078;
double r29080 = r29079 * r29073;
double r29081 = r29076 - r29080;
double r29082 = sqrt(r29081);
double r29083 = r29075 - r29082;
double r29084 = r29074 / r29083;
double r29085 = r29075 + r29082;
double r29086 = r29072 * r29078;
double r29087 = r29085 / r29086;
double r29088 = r29071 ? r29084 : r29087;
return r29088;
}
double f(double a, double b, double c) {
double r29089 = b;
double r29090 = -2.7031326112465227e+141;
bool r29091 = r29089 <= r29090;
double r29092 = 0.0;
bool r29093 = r29089 >= r29092;
double r29094 = 2.0;
double r29095 = c;
double r29096 = r29094 * r29095;
double r29097 = -r29089;
double r29098 = a;
double r29099 = cbrt(r29089);
double r29100 = r29099 * r29099;
double r29101 = r29098 / r29100;
double r29102 = r29095 / r29099;
double r29103 = r29101 * r29102;
double r29104 = r29094 * r29103;
double r29105 = r29089 - r29104;
double r29106 = r29097 - r29105;
double r29107 = r29096 / r29106;
double r29108 = -2.0;
double r29109 = r29108 * r29089;
double r29110 = r29109 / r29094;
double r29111 = r29110 / r29098;
double r29112 = r29093 ? r29107 : r29111;
double r29113 = 2.028095266961813e+109;
bool r29114 = r29089 <= r29113;
double r29115 = r29089 * r29089;
double r29116 = 4.0;
double r29117 = r29116 * r29098;
double r29118 = r29117 * r29095;
double r29119 = r29115 - r29118;
double r29120 = cbrt(r29119);
double r29121 = fabs(r29120);
double r29122 = sqrt(r29120);
double r29123 = r29121 * r29122;
double r29124 = r29097 - r29123;
double r29125 = r29096 / r29124;
double r29126 = sqrt(r29119);
double r29127 = r29126 - r29089;
double r29128 = r29127 / r29094;
double r29129 = r29128 / r29098;
double r29130 = r29093 ? r29125 : r29129;
double r29131 = sqrt(r29126);
double r29132 = fma(r29131, r29131, r29097);
double r29133 = r29132 / r29094;
double r29134 = r29133 / r29098;
double r29135 = r29093 ? r29107 : r29134;
double r29136 = r29114 ? r29130 : r29135;
double r29137 = r29091 ? r29112 : r29136;
return r29137;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -2.7031326112465227e+141Initial program 59.5
Simplified59.5
Taylor expanded around inf 59.5
rmApplied add-cube-cbrt59.5
Applied times-frac59.5
rmApplied add-sqr-sqrt59.5
Applied sqrt-prod59.5
Applied fma-neg59.5
Taylor expanded around -inf 3.1
Simplified3.1
if -2.7031326112465227e+141 < b < 2.028095266961813e+109Initial program 8.7
Simplified8.7
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Simplified8.9
if 2.028095266961813e+109 < b Initial program 31.3
Simplified31.3
Taylor expanded around inf 6.2
rmApplied add-cube-cbrt6.2
Applied times-frac2.3
rmApplied add-sqr-sqrt2.3
Applied sqrt-prod2.3
Applied fma-neg2.3
Final simplification6.7
herbie shell --seed 2020047 +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))))