\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 -8.3645547041066157 \cdot 10^{-80}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 4.1199128263687574 \cdot 10^{46}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r86745 = b;
double r86746 = -r86745;
double r86747 = r86745 * r86745;
double r86748 = 4.0;
double r86749 = a;
double r86750 = c;
double r86751 = r86749 * r86750;
double r86752 = r86748 * r86751;
double r86753 = r86747 - r86752;
double r86754 = sqrt(r86753);
double r86755 = r86746 - r86754;
double r86756 = 2.0;
double r86757 = r86756 * r86749;
double r86758 = r86755 / r86757;
return r86758;
}
double f(double a, double b, double c) {
double r86759 = b;
double r86760 = -8.364554704106616e-80;
bool r86761 = r86759 <= r86760;
double r86762 = -1.0;
double r86763 = c;
double r86764 = r86763 / r86759;
double r86765 = r86762 * r86764;
double r86766 = 4.1199128263687574e+46;
bool r86767 = r86759 <= r86766;
double r86768 = 1.0;
double r86769 = 2.0;
double r86770 = a;
double r86771 = r86769 * r86770;
double r86772 = -r86759;
double r86773 = r86759 * r86759;
double r86774 = 4.0;
double r86775 = r86770 * r86763;
double r86776 = r86774 * r86775;
double r86777 = r86773 - r86776;
double r86778 = sqrt(r86777);
double r86779 = r86772 - r86778;
double r86780 = r86771 / r86779;
double r86781 = r86768 / r86780;
double r86782 = 1.0;
double r86783 = r86759 / r86770;
double r86784 = r86764 - r86783;
double r86785 = r86782 * r86784;
double r86786 = r86767 ? r86781 : r86785;
double r86787 = r86761 ? r86765 : r86786;
return r86787;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 21.1 |
| Herbie | 10.2 |
if b < -8.364554704106616e-80Initial program 53.8
Taylor expanded around -inf 9.1
if -8.364554704106616e-80 < b < 4.1199128263687574e+46Initial program 13.8
rmApplied clear-num13.9
if 4.1199128263687574e+46 < b Initial program 36.8
Taylor expanded around inf 5.2
Simplified5.2
Final simplification10.2
herbie shell --seed 2020046
(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)))