\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -2.6472597296593428 \cdot 10^{81}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -1.1269687192740625 \cdot 10^{-234}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{elif}\;b \le 8.181926998189475 \cdot 10^{98}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\frac{c \cdot 4}{1}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r56106 = b;
double r56107 = -r56106;
double r56108 = r56106 * r56106;
double r56109 = 4.0;
double r56110 = a;
double r56111 = r56109 * r56110;
double r56112 = c;
double r56113 = r56111 * r56112;
double r56114 = r56108 - r56113;
double r56115 = sqrt(r56114);
double r56116 = r56107 + r56115;
double r56117 = 2.0;
double r56118 = r56117 * r56110;
double r56119 = r56116 / r56118;
return r56119;
}
double f(double a, double b, double c) {
double r56120 = b;
double r56121 = -2.647259729659343e+81;
bool r56122 = r56120 <= r56121;
double r56123 = 1.0;
double r56124 = c;
double r56125 = r56124 / r56120;
double r56126 = a;
double r56127 = r56120 / r56126;
double r56128 = r56125 - r56127;
double r56129 = r56123 * r56128;
double r56130 = -1.1269687192740625e-234;
bool r56131 = r56120 <= r56130;
double r56132 = 1.0;
double r56133 = 2.0;
double r56134 = r56133 * r56126;
double r56135 = -r56120;
double r56136 = r56120 * r56120;
double r56137 = 4.0;
double r56138 = r56137 * r56126;
double r56139 = r56138 * r56124;
double r56140 = r56136 - r56139;
double r56141 = sqrt(r56140);
double r56142 = r56135 + r56141;
double r56143 = r56134 / r56142;
double r56144 = r56132 / r56143;
double r56145 = 8.181926998189475e+98;
bool r56146 = r56120 <= r56145;
double r56147 = r56132 / r56133;
double r56148 = r56124 * r56137;
double r56149 = r56148 / r56132;
double r56150 = r56135 - r56141;
double r56151 = r56149 / r56150;
double r56152 = r56147 * r56151;
double r56153 = -1.0;
double r56154 = r56153 * r56125;
double r56155 = r56146 ? r56152 : r56154;
double r56156 = r56131 ? r56144 : r56155;
double r56157 = r56122 ? r56129 : r56156;
return r56157;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.647259729659343e+81Initial program 42.0
Taylor expanded around -inf 4.7
Simplified4.7
if -2.647259729659343e+81 < b < -1.1269687192740625e-234Initial program 8.2
rmApplied clear-num8.3
if -1.1269687192740625e-234 < b < 8.181926998189475e+98Initial program 29.4
rmApplied flip-+29.5
Simplified16.5
rmApplied *-un-lft-identity16.5
Applied *-un-lft-identity16.5
Applied times-frac16.5
Applied times-frac16.5
Simplified16.5
Simplified21.7
rmApplied associate-/r*15.9
Simplified10.1
if 8.181926998189475e+98 < b Initial program 59.5
Taylor expanded around inf 2.8
Final simplification7.0
herbie shell --seed 2020065 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))