\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 -2.644409376808577592769878215530106196344 \cdot 10^{-69}:\\
\;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\
\mathbf{elif}\;b \le 2.542951486580225494391623071663800816645 \cdot 10^{93}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r77491 = b;
double r77492 = -r77491;
double r77493 = r77491 * r77491;
double r77494 = 4.0;
double r77495 = a;
double r77496 = c;
double r77497 = r77495 * r77496;
double r77498 = r77494 * r77497;
double r77499 = r77493 - r77498;
double r77500 = sqrt(r77499);
double r77501 = r77492 - r77500;
double r77502 = 2.0;
double r77503 = r77502 * r77495;
double r77504 = r77501 / r77503;
return r77504;
}
double f(double a, double b, double c) {
double r77505 = b;
double r77506 = -2.6444093768085776e-69;
bool r77507 = r77505 <= r77506;
double r77508 = 1.0;
double r77509 = 2.0;
double r77510 = r77508 / r77509;
double r77511 = -2.0;
double r77512 = c;
double r77513 = r77512 / r77505;
double r77514 = r77511 * r77513;
double r77515 = r77510 * r77514;
double r77516 = 2.5429514865802255e+93;
bool r77517 = r77505 <= r77516;
double r77518 = -r77505;
double r77519 = r77505 * r77505;
double r77520 = 4.0;
double r77521 = a;
double r77522 = r77521 * r77512;
double r77523 = r77520 * r77522;
double r77524 = r77519 - r77523;
double r77525 = sqrt(r77524);
double r77526 = r77518 - r77525;
double r77527 = r77526 / r77521;
double r77528 = r77510 * r77527;
double r77529 = r77505 / r77521;
double r77530 = r77511 * r77529;
double r77531 = r77510 * r77530;
double r77532 = r77517 ? r77528 : r77531;
double r77533 = r77507 ? r77515 : r77532;
return r77533;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 20.8 |
| Herbie | 10.0 |
if b < -2.6444093768085776e-69Initial program 53.4
rmApplied *-un-lft-identity53.4
Applied times-frac53.4
Taylor expanded around -inf 8.8
if -2.6444093768085776e-69 < b < 2.5429514865802255e+93Initial program 13.4
rmApplied *-un-lft-identity13.4
Applied times-frac13.4
if 2.5429514865802255e+93 < b Initial program 45.2
rmApplied *-un-lft-identity45.2
Applied times-frac45.2
rmApplied flip--62.9
Simplified62.0
Simplified62.0
Taylor expanded around 0 3.5
Final simplification10.0
herbie shell --seed 2019347
(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)))