\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 -1.990473150623290141018988832760520387873 \cdot 10^{112}:\\
\;\;\;\;\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{c \cdot 2}{\mathsf{fma}\left(-2, b, \frac{2 \cdot \left(a \cdot c\right)}{b}\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.932191065039699403664081156929555460562 \cdot 10^{107}:\\
\;\;\;\;\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{c \cdot 2}{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \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}}} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(b, -2, \frac{2 \cdot a}{\frac{b}{c}}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1010071 = b;
double r1010072 = 0.0;
bool r1010073 = r1010071 >= r1010072;
double r1010074 = -r1010071;
double r1010075 = r1010071 * r1010071;
double r1010076 = 4.0;
double r1010077 = a;
double r1010078 = r1010076 * r1010077;
double r1010079 = c;
double r1010080 = r1010078 * r1010079;
double r1010081 = r1010075 - r1010080;
double r1010082 = sqrt(r1010081);
double r1010083 = r1010074 - r1010082;
double r1010084 = 2.0;
double r1010085 = r1010084 * r1010077;
double r1010086 = r1010083 / r1010085;
double r1010087 = r1010084 * r1010079;
double r1010088 = r1010074 + r1010082;
double r1010089 = r1010087 / r1010088;
double r1010090 = r1010073 ? r1010086 : r1010089;
return r1010090;
}
double f(double a, double b, double c) {
double r1010091 = b;
double r1010092 = -1.99047315062329e+112;
bool r1010093 = r1010091 <= r1010092;
double r1010094 = 0.0;
bool r1010095 = r1010091 >= r1010094;
double r1010096 = -r1010091;
double r1010097 = r1010091 * r1010091;
double r1010098 = 4.0;
double r1010099 = a;
double r1010100 = r1010098 * r1010099;
double r1010101 = c;
double r1010102 = r1010100 * r1010101;
double r1010103 = r1010097 - r1010102;
double r1010104 = sqrt(r1010103);
double r1010105 = r1010096 - r1010104;
double r1010106 = 2.0;
double r1010107 = r1010106 * r1010099;
double r1010108 = r1010105 / r1010107;
double r1010109 = r1010101 * r1010106;
double r1010110 = -2.0;
double r1010111 = r1010099 * r1010101;
double r1010112 = r1010106 * r1010111;
double r1010113 = r1010112 / r1010091;
double r1010114 = fma(r1010110, r1010091, r1010113);
double r1010115 = r1010109 / r1010114;
double r1010116 = r1010095 ? r1010108 : r1010115;
double r1010117 = 3.9321910650396994e+107;
bool r1010118 = r1010091 <= r1010117;
double r1010119 = sqrt(r1010104);
double r1010120 = cbrt(r1010104);
double r1010121 = r1010120 * r1010120;
double r1010122 = r1010121 * r1010120;
double r1010123 = sqrt(r1010122);
double r1010124 = r1010119 * r1010123;
double r1010125 = r1010124 + r1010096;
double r1010126 = r1010109 / r1010125;
double r1010127 = r1010095 ? r1010108 : r1010126;
double r1010128 = r1010091 / r1010101;
double r1010129 = r1010107 / r1010128;
double r1010130 = fma(r1010091, r1010110, r1010129);
double r1010131 = r1010130 / r1010107;
double r1010132 = r1010104 + r1010096;
double r1010133 = r1010109 / r1010132;
double r1010134 = r1010095 ? r1010131 : r1010133;
double r1010135 = r1010118 ? r1010127 : r1010134;
double r1010136 = r1010093 ? r1010116 : r1010135;
return r1010136;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.99047315062329e+112Initial program 31.8
rmApplied add-sqr-sqrt31.8
Applied sqrt-prod31.8
Taylor expanded around -inf 6.9
Simplified6.9
if -1.99047315062329e+112 < b < 3.9321910650396994e+107Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
rmApplied add-cube-cbrt9.6
if 3.9321910650396994e+107 < b Initial program 49.2
rmApplied add-sqr-sqrt49.2
Applied sqrt-prod49.2
Taylor expanded around inf 10.0
Simplified3.6
Final simplification8.1
herbie shell --seed 2019171 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))