\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 -8.55528137777049654 \cdot 10^{140}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 9.52089004516141949 \cdot 10^{-271}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{elif}\;b \le 26039420339585284:\\
\;\;\;\;\frac{\frac{1}{\frac{\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{4}}{a}}{c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r56108 = b;
double r56109 = -r56108;
double r56110 = r56108 * r56108;
double r56111 = 4.0;
double r56112 = a;
double r56113 = r56111 * r56112;
double r56114 = c;
double r56115 = r56113 * r56114;
double r56116 = r56110 - r56115;
double r56117 = sqrt(r56116);
double r56118 = r56109 + r56117;
double r56119 = 2.0;
double r56120 = r56119 * r56112;
double r56121 = r56118 / r56120;
return r56121;
}
double f(double a, double b, double c) {
double r56122 = b;
double r56123 = -8.555281377770497e+140;
bool r56124 = r56122 <= r56123;
double r56125 = 1.0;
double r56126 = c;
double r56127 = r56126 / r56122;
double r56128 = a;
double r56129 = r56122 / r56128;
double r56130 = r56127 - r56129;
double r56131 = r56125 * r56130;
double r56132 = 9.52089004516142e-271;
bool r56133 = r56122 <= r56132;
double r56134 = -r56122;
double r56135 = r56122 * r56122;
double r56136 = 4.0;
double r56137 = r56136 * r56128;
double r56138 = r56137 * r56126;
double r56139 = r56135 - r56138;
double r56140 = sqrt(r56139);
double r56141 = r56134 + r56140;
double r56142 = 2.0;
double r56143 = r56142 * r56128;
double r56144 = r56141 / r56143;
double r56145 = 26039420339585284.0;
bool r56146 = r56122 <= r56145;
double r56147 = 1.0;
double r56148 = r56134 - r56140;
double r56149 = r56148 / r56136;
double r56150 = r56149 / r56128;
double r56151 = r56150 / r56126;
double r56152 = r56147 / r56151;
double r56153 = r56152 / r56143;
double r56154 = -1.0;
double r56155 = r56154 * r56127;
double r56156 = r56146 ? r56153 : r56155;
double r56157 = r56133 ? r56144 : r56156;
double r56158 = r56124 ? r56131 : r56157;
return r56158;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -8.555281377770497e+140Initial program 58.5
rmApplied flip-+63.9
Simplified62.7
rmApplied clear-num62.7
Simplified62.7
Taylor expanded around -inf 2.4
Simplified2.4
if -8.555281377770497e+140 < b < 9.52089004516142e-271Initial program 9.7
if 9.52089004516142e-271 < b < 26039420339585284.0Initial program 27.1
rmApplied flip-+27.2
Simplified17.0
rmApplied clear-num17.1
Simplified17.1
rmApplied associate-/r*14.2
if 26039420339585284.0 < b Initial program 56.0
rmApplied flip-+56.0
Simplified26.6
rmApplied clear-num26.8
Simplified26.8
Taylor expanded around inf 4.8
Final simplification8.1
herbie shell --seed 2020046
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))