\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.869662346631121401645595393947635525169 \cdot 10^{101}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 7.455592343308264166675918758902222662503 \cdot 10^{-170}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)} - b}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r78758 = b;
double r78759 = -r78758;
double r78760 = r78758 * r78758;
double r78761 = 4.0;
double r78762 = a;
double r78763 = c;
double r78764 = r78762 * r78763;
double r78765 = r78761 * r78764;
double r78766 = r78760 - r78765;
double r78767 = sqrt(r78766);
double r78768 = r78759 - r78767;
double r78769 = 2.0;
double r78770 = r78769 * r78762;
double r78771 = r78768 / r78770;
return r78771;
}
double f(double a, double b, double c) {
double r78772 = b;
double r78773 = -1.8696623466311214e+101;
bool r78774 = r78772 <= r78773;
double r78775 = -1.0;
double r78776 = c;
double r78777 = r78776 / r78772;
double r78778 = r78775 * r78777;
double r78779 = 7.455592343308264e-170;
bool r78780 = r78772 <= r78779;
double r78781 = 2.0;
double r78782 = r78781 * r78776;
double r78783 = 4.0;
double r78784 = a;
double r78785 = r78784 * r78776;
double r78786 = r78783 * r78785;
double r78787 = -r78786;
double r78788 = fma(r78772, r78772, r78787);
double r78789 = sqrt(r78788);
double r78790 = r78789 - r78772;
double r78791 = r78782 / r78790;
double r78792 = 1.0;
double r78793 = r78772 / r78784;
double r78794 = r78777 - r78793;
double r78795 = r78792 * r78794;
double r78796 = r78780 ? r78791 : r78795;
double r78797 = r78774 ? r78778 : r78796;
return r78797;
}




Bits error versus a




Bits error versus b




Bits error versus c
| Original | 33.9 |
|---|---|
| Target | 21.1 |
| Herbie | 11.3 |
if b < -1.8696623466311214e+101Initial program 59.8
Taylor expanded around -inf 2.5
if -1.8696623466311214e+101 < b < 7.455592343308264e-170Initial program 28.9
rmApplied flip--29.1
Simplified16.7
Simplified16.7
rmApplied div-inv16.7
rmApplied associate-*l/16.2
Simplified16.1
Taylor expanded around 0 11.1
if 7.455592343308264e-170 < b Initial program 23.0
Taylor expanded around inf 17.1
Simplified17.1
Final simplification11.3
herbie shell --seed 2019323 +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)))