\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}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\
\end{array}double f(double a, double b, double c) {
double r94627 = b;
double r94628 = -r94627;
double r94629 = r94627 * r94627;
double r94630 = 4.0;
double r94631 = a;
double r94632 = c;
double r94633 = r94631 * r94632;
double r94634 = r94630 * r94633;
double r94635 = r94629 - r94634;
double r94636 = sqrt(r94635);
double r94637 = r94628 - r94636;
double r94638 = 2.0;
double r94639 = r94638 * r94631;
double r94640 = r94637 / r94639;
return r94640;
}
double f(double a, double b, double c) {
double r94641 = b;
double r94642 = -1.8696623466311214e+101;
bool r94643 = r94641 <= r94642;
double r94644 = -1.0;
double r94645 = c;
double r94646 = r94645 / r94641;
double r94647 = r94644 * r94646;
double r94648 = 7.455592343308264e-170;
bool r94649 = r94641 <= r94648;
double r94650 = 2.0;
double r94651 = r94650 * r94645;
double r94652 = -r94641;
double r94653 = r94641 * r94641;
double r94654 = 4.0;
double r94655 = a;
double r94656 = r94655 * r94645;
double r94657 = r94654 * r94656;
double r94658 = r94653 - r94657;
double r94659 = sqrt(r94658);
double r94660 = r94652 + r94659;
double r94661 = r94651 / r94660;
double r94662 = r94641 / r94655;
double r94663 = r94646 - r94662;
double r94664 = 1.0;
double r94665 = r94663 * r94664;
double r94666 = r94649 ? r94661 : r94665;
double r94667 = r94643 ? r94647 : r94666;
return r94667;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| 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
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
(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)))