\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 -4.78285893492843261 \cdot 10^{-126}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 3.6627135292415903 \cdot 10^{111}:\\
\;\;\;\;\frac{\left(-b\right) - \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 r67404 = b;
double r67405 = -r67404;
double r67406 = r67404 * r67404;
double r67407 = 4.0;
double r67408 = a;
double r67409 = c;
double r67410 = r67408 * r67409;
double r67411 = r67407 * r67410;
double r67412 = r67406 - r67411;
double r67413 = sqrt(r67412);
double r67414 = r67405 - r67413;
double r67415 = 2.0;
double r67416 = r67415 * r67408;
double r67417 = r67414 / r67416;
return r67417;
}
double f(double a, double b, double c) {
double r67418 = b;
double r67419 = -4.7828589349284326e-126;
bool r67420 = r67418 <= r67419;
double r67421 = -1.0;
double r67422 = c;
double r67423 = r67422 / r67418;
double r67424 = r67421 * r67423;
double r67425 = 3.6627135292415903e+111;
bool r67426 = r67418 <= r67425;
double r67427 = -r67418;
double r67428 = r67418 * r67418;
double r67429 = 4.0;
double r67430 = a;
double r67431 = r67430 * r67422;
double r67432 = r67429 * r67431;
double r67433 = r67428 - r67432;
double r67434 = sqrt(r67433);
double r67435 = r67427 - r67434;
double r67436 = 2.0;
double r67437 = r67436 * r67430;
double r67438 = r67435 / r67437;
double r67439 = 1.0;
double r67440 = r67418 / r67430;
double r67441 = r67423 - r67440;
double r67442 = r67439 * r67441;
double r67443 = r67426 ? r67438 : r67442;
double r67444 = r67420 ? r67424 : r67443;
return r67444;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 20.6 |
| Herbie | 10.5 |
if b < -4.7828589349284326e-126Initial program 51.3
Taylor expanded around -inf 11.3
if -4.7828589349284326e-126 < b < 3.6627135292415903e+111Initial program 12.0
rmApplied div-inv12.1
rmApplied un-div-inv12.0
if 3.6627135292415903e+111 < b Initial program 49.7
Taylor expanded around inf 3.4
Simplified3.4
Final simplification10.5
herbie shell --seed 2020047 +o rules:numerics
(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)))