\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 -3.411206454162785 \cdot 10^{+120}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 8.142093116881289 \cdot 10^{-248}:\\
\;\;\;\;\frac{4}{\sqrt{c \cdot \left(-4 \cdot a\right) + b \cdot b} - b} \cdot \left(\frac{1}{2} \cdot c\right)\\
\mathbf{elif}\;b \le 5.419916601733116 \cdot 10^{+77}:\\
\;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r4931249 = b;
double r4931250 = -r4931249;
double r4931251 = r4931249 * r4931249;
double r4931252 = 4.0;
double r4931253 = a;
double r4931254 = c;
double r4931255 = r4931253 * r4931254;
double r4931256 = r4931252 * r4931255;
double r4931257 = r4931251 - r4931256;
double r4931258 = sqrt(r4931257);
double r4931259 = r4931250 - r4931258;
double r4931260 = 2.0;
double r4931261 = r4931260 * r4931253;
double r4931262 = r4931259 / r4931261;
return r4931262;
}
double f(double a, double b, double c) {
double r4931263 = b;
double r4931264 = -3.411206454162785e+120;
bool r4931265 = r4931263 <= r4931264;
double r4931266 = c;
double r4931267 = r4931266 / r4931263;
double r4931268 = -r4931267;
double r4931269 = 8.142093116881289e-248;
bool r4931270 = r4931263 <= r4931269;
double r4931271 = 4.0;
double r4931272 = -4.0;
double r4931273 = a;
double r4931274 = r4931272 * r4931273;
double r4931275 = r4931266 * r4931274;
double r4931276 = r4931263 * r4931263;
double r4931277 = r4931275 + r4931276;
double r4931278 = sqrt(r4931277);
double r4931279 = r4931278 - r4931263;
double r4931280 = r4931271 / r4931279;
double r4931281 = 0.5;
double r4931282 = r4931281 * r4931266;
double r4931283 = r4931280 * r4931282;
double r4931284 = 5.419916601733116e+77;
bool r4931285 = r4931263 <= r4931284;
double r4931286 = -r4931263;
double r4931287 = r4931273 * r4931266;
double r4931288 = r4931287 * r4931271;
double r4931289 = r4931276 - r4931288;
double r4931290 = sqrt(r4931289);
double r4931291 = r4931286 - r4931290;
double r4931292 = 1.0;
double r4931293 = 2.0;
double r4931294 = r4931293 * r4931273;
double r4931295 = r4931292 / r4931294;
double r4931296 = r4931291 * r4931295;
double r4931297 = r4931263 / r4931273;
double r4931298 = r4931267 - r4931297;
double r4931299 = r4931285 ? r4931296 : r4931298;
double r4931300 = r4931270 ? r4931283 : r4931299;
double r4931301 = r4931265 ? r4931268 : r4931300;
return r4931301;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.3 |
|---|---|
| Target | 20.6 |
| Herbie | 6.6 |
if b < -3.411206454162785e+120Initial program 59.4
Taylor expanded around -inf 1.9
Simplified1.9
if -3.411206454162785e+120 < b < 8.142093116881289e-248Initial program 30.9
rmApplied flip--31.1
Applied associate-/l/36.0
Simplified20.1
rmApplied times-frac14.3
Simplified8.9
Simplified9.0
if 8.142093116881289e-248 < b < 5.419916601733116e+77Initial program 8.5
rmApplied div-inv8.7
if 5.419916601733116e+77 < b Initial program 40.5
rmApplied div-inv40.6
Taylor expanded around inf 4.7
Final simplification6.6
herbie shell --seed 2019124
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 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)))