\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.376637749254643141204160964439992434625 \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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 0.01064842317658122247681085070780682144687:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\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{\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}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\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 r32026 = b;
double r32027 = 0.0;
bool r32028 = r32026 >= r32027;
double r32029 = 2.0;
double r32030 = c;
double r32031 = r32029 * r32030;
double r32032 = -r32026;
double r32033 = r32026 * r32026;
double r32034 = 4.0;
double r32035 = a;
double r32036 = r32034 * r32035;
double r32037 = r32036 * r32030;
double r32038 = r32033 - r32037;
double r32039 = sqrt(r32038);
double r32040 = r32032 - r32039;
double r32041 = r32031 / r32040;
double r32042 = r32032 + r32039;
double r32043 = r32029 * r32035;
double r32044 = r32042 / r32043;
double r32045 = r32028 ? r32041 : r32044;
return r32045;
}
double f(double a, double b, double c) {
double r32046 = b;
double r32047 = -1.376637749254643e+154;
bool r32048 = r32046 <= r32047;
double r32049 = 0.0;
bool r32050 = r32046 >= r32049;
double r32051 = 2.0;
double r32052 = c;
double r32053 = r32051 * r32052;
double r32054 = -r32046;
double r32055 = r32046 * r32046;
double r32056 = 4.0;
double r32057 = a;
double r32058 = r32056 * r32057;
double r32059 = r32058 * r32052;
double r32060 = r32055 - r32059;
double r32061 = sqrt(r32060);
double r32062 = r32054 - r32061;
double r32063 = r32053 / r32062;
double r32064 = r32057 * r32052;
double r32065 = r32064 / r32046;
double r32066 = r32051 * r32065;
double r32067 = 2.0;
double r32068 = r32067 * r32046;
double r32069 = r32066 - r32068;
double r32070 = r32051 * r32057;
double r32071 = r32069 / r32070;
double r32072 = r32050 ? r32063 : r32071;
double r32073 = 0.010648423176581222;
bool r32074 = r32046 <= r32073;
double r32075 = cbrt(r32060);
double r32076 = sqrt(r32075);
double r32077 = r32075 * r32075;
double r32078 = cbrt(r32077);
double r32079 = cbrt(r32075);
double r32080 = r32078 * r32079;
double r32081 = sqrt(r32080);
double r32082 = r32076 * r32081;
double r32083 = fabs(r32082);
double r32084 = r32083 * r32076;
double r32085 = r32054 - r32084;
double r32086 = r32053 / r32085;
double r32087 = r32061 - r32046;
double r32088 = r32087 / r32070;
double r32089 = r32050 ? r32086 : r32088;
double r32090 = r32046 - r32066;
double r32091 = r32054 - r32090;
double r32092 = r32053 / r32091;
double r32093 = r32050 ? r32092 : r32088;
double r32094 = r32074 ? r32089 : r32093;
double r32095 = r32048 ? r32072 : r32094;
return r32095;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.376637749254643e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 10.9
if -1.376637749254643e+154 < b < 0.010648423176581222Initial program 9.0
Simplified9.0
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
Simplified9.2
rmApplied add-sqr-sqrt9.2
rmApplied add-cube-cbrt9.2
Applied cbrt-prod9.2
if 0.010648423176581222 < b Initial program 22.5
Simplified22.5
Taylor expanded around inf 9.2
Final simplification9.4
herbie shell --seed 2019305
(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))))