\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -6.6114837319571935 \cdot 10^{38}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -3.49799969143154611 \cdot 10^{-295}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{elif}\;b \le 1.5018928133646766 \cdot 10^{85}:\\
\;\;\;\;\frac{-b}{2 \cdot a} - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r78260 = b;
double r78261 = -r78260;
double r78262 = r78260 * r78260;
double r78263 = 4.0;
double r78264 = a;
double r78265 = c;
double r78266 = r78264 * r78265;
double r78267 = r78263 * r78266;
double r78268 = r78262 - r78267;
double r78269 = sqrt(r78268);
double r78270 = r78261 - r78269;
double r78271 = 2.0;
double r78272 = r78271 * r78264;
double r78273 = r78270 / r78272;
return r78273;
}
double f(double a, double b, double c) {
double r78274 = b;
double r78275 = -6.6114837319571935e+38;
bool r78276 = r78274 <= r78275;
double r78277 = -1.0;
double r78278 = c;
double r78279 = r78278 / r78274;
double r78280 = r78277 * r78279;
double r78281 = -3.497999691431546e-295;
bool r78282 = r78274 <= r78281;
double r78283 = 2.0;
double r78284 = r78283 * r78278;
double r78285 = -r78274;
double r78286 = r78274 * r78274;
double r78287 = 4.0;
double r78288 = a;
double r78289 = r78288 * r78278;
double r78290 = r78287 * r78289;
double r78291 = r78286 - r78290;
double r78292 = sqrt(r78291);
double r78293 = r78285 + r78292;
double r78294 = r78284 / r78293;
double r78295 = 1.5018928133646766e+85;
bool r78296 = r78274 <= r78295;
double r78297 = r78283 * r78288;
double r78298 = r78285 / r78297;
double r78299 = r78292 / r78297;
double r78300 = r78298 - r78299;
double r78301 = 1.0;
double r78302 = r78274 / r78288;
double r78303 = r78279 - r78302;
double r78304 = r78301 * r78303;
double r78305 = r78296 ? r78300 : r78304;
double r78306 = r78282 ? r78294 : r78305;
double r78307 = r78276 ? r78280 : r78306;
return r78307;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 21.2 |
| Herbie | 7.2 |
if b < -6.6114837319571935e+38Initial program 57.0
Taylor expanded around -inf 4.8
if -6.6114837319571935e+38 < b < -3.497999691431546e-295Initial program 29.3
rmApplied div-inv29.4
rmApplied flip--29.4
Applied associate-*l/29.4
Simplified17.6
Taylor expanded around 0 10.1
if -3.497999691431546e-295 < b < 1.5018928133646766e+85Initial program 9.4
rmApplied div-sub9.4
if 1.5018928133646766e+85 < b Initial program 43.7
Taylor expanded around inf 3.6
Simplified3.6
Final simplification7.2
herbie shell --seed 2020039
(FPCore (a b c)
:name "quadm (p42, negative)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))