\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.16908657181932359 \cdot 10^{-104}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 1.3316184968738608 \cdot 10^{61}:\\
\;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{b}{a}}{2}\\
\end{array}double f(double a, double b, double c) {
double r108440 = b;
double r108441 = -r108440;
double r108442 = r108440 * r108440;
double r108443 = 4.0;
double r108444 = a;
double r108445 = c;
double r108446 = r108444 * r108445;
double r108447 = r108443 * r108446;
double r108448 = r108442 - r108447;
double r108449 = sqrt(r108448);
double r108450 = r108441 - r108449;
double r108451 = 2.0;
double r108452 = r108451 * r108444;
double r108453 = r108450 / r108452;
return r108453;
}
double f(double a, double b, double c) {
double r108454 = b;
double r108455 = -4.1690865718193236e-104;
bool r108456 = r108454 <= r108455;
double r108457 = -1.0;
double r108458 = c;
double r108459 = r108458 / r108454;
double r108460 = r108457 * r108459;
double r108461 = 1.3316184968738608e+61;
bool r108462 = r108454 <= r108461;
double r108463 = -r108454;
double r108464 = r108454 * r108454;
double r108465 = 4.0;
double r108466 = a;
double r108467 = r108466 * r108458;
double r108468 = r108465 * r108467;
double r108469 = r108464 - r108468;
double r108470 = sqrt(r108469);
double r108471 = r108463 - r108470;
double r108472 = r108471 / r108466;
double r108473 = 2.0;
double r108474 = r108472 / r108473;
double r108475 = -2.0;
double r108476 = r108454 / r108466;
double r108477 = r108475 * r108476;
double r108478 = r108477 / r108473;
double r108479 = r108462 ? r108474 : r108478;
double r108480 = r108456 ? r108460 : r108479;
return r108480;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.6 |
|---|---|
| Target | 20.6 |
| Herbie | 10.3 |
if b < -4.1690865718193236e-104Initial program 51.5
Taylor expanded around -inf 11.0
if -4.1690865718193236e-104 < b < 1.3316184968738608e+61Initial program 12.3
rmApplied associate-/r*12.3
rmApplied *-un-lft-identity12.3
Applied *-un-lft-identity12.3
Applied times-frac12.3
Applied associate-/l*12.4
rmApplied associate-/r/12.4
Applied associate-/r*12.4
Simplified12.4
rmApplied associate-*l/12.3
Simplified12.3
if 1.3316184968738608e+61 < b Initial program 39.6
rmApplied associate-/r*39.5
rmApplied *-un-lft-identity39.5
Applied *-un-lft-identity39.5
Applied times-frac39.5
Applied associate-/l*39.6
rmApplied associate-/r/39.6
Applied associate-/r*39.6
Simplified39.6
Taylor expanded around 0 4.6
Final simplification10.3
herbie shell --seed 2020045
(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)))