\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 -1.4266250849096228 \cdot 10^{-56}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 2.2373425340727037 \cdot 10^{+98}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b + a \cdot \left(-4 \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r2621657 = b;
double r2621658 = -r2621657;
double r2621659 = r2621657 * r2621657;
double r2621660 = 4.0;
double r2621661 = a;
double r2621662 = c;
double r2621663 = r2621661 * r2621662;
double r2621664 = r2621660 * r2621663;
double r2621665 = r2621659 - r2621664;
double r2621666 = sqrt(r2621665);
double r2621667 = r2621658 - r2621666;
double r2621668 = 2.0;
double r2621669 = r2621668 * r2621661;
double r2621670 = r2621667 / r2621669;
return r2621670;
}
double f(double a, double b, double c) {
double r2621671 = b;
double r2621672 = -1.4266250849096228e-56;
bool r2621673 = r2621671 <= r2621672;
double r2621674 = c;
double r2621675 = r2621674 / r2621671;
double r2621676 = -r2621675;
double r2621677 = 2.2373425340727037e+98;
bool r2621678 = r2621671 <= r2621677;
double r2621679 = 1.0;
double r2621680 = 2.0;
double r2621681 = a;
double r2621682 = r2621680 * r2621681;
double r2621683 = -r2621671;
double r2621684 = r2621671 * r2621671;
double r2621685 = -4.0;
double r2621686 = r2621685 * r2621674;
double r2621687 = r2621681 * r2621686;
double r2621688 = r2621684 + r2621687;
double r2621689 = sqrt(r2621688);
double r2621690 = r2621683 - r2621689;
double r2621691 = r2621682 / r2621690;
double r2621692 = r2621679 / r2621691;
double r2621693 = r2621671 / r2621681;
double r2621694 = r2621675 - r2621693;
double r2621695 = r2621678 ? r2621692 : r2621694;
double r2621696 = r2621673 ? r2621676 : r2621695;
return r2621696;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 32.5 |
|---|---|
| Target | 20.0 |
| Herbie | 9.9 |
if b < -1.4266250849096228e-56Initial program 52.5
rmApplied sub-neg52.5
Simplified52.5
Taylor expanded around -inf 8.3
Simplified8.3
if -1.4266250849096228e-56 < b < 2.2373425340727037e+98Initial program 12.7
rmApplied sub-neg12.7
Simplified12.8
rmApplied *-un-lft-identity12.8
Applied associate-/l*12.9
if 2.2373425340727037e+98 < b Initial program 43.2
Taylor expanded around inf 4.9
Final simplification9.9
herbie shell --seed 2019149
(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)))