\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 -4.297522851756149307625287590446857172218 \cdot 10^{130}:\\
\;\;\;\;\frac{1}{2} \cdot \left(2 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\right)\\
\mathbf{elif}\;b \le -7.499564665356541230478133000064554936556 \cdot 10^{-290}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{elif}\;b \le 2.043334298601044940502096480059938459672 \cdot 10^{53}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{1}{\frac{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{c}}{4}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\
\end{array}double f(double a, double b, double c) {
double r73590 = b;
double r73591 = -r73590;
double r73592 = r73590 * r73590;
double r73593 = 4.0;
double r73594 = a;
double r73595 = c;
double r73596 = r73594 * r73595;
double r73597 = r73593 * r73596;
double r73598 = r73592 - r73597;
double r73599 = sqrt(r73598);
double r73600 = r73591 + r73599;
double r73601 = 2.0;
double r73602 = r73601 * r73594;
double r73603 = r73600 / r73602;
return r73603;
}
double f(double a, double b, double c) {
double r73604 = b;
double r73605 = -4.2975228517561493e+130;
bool r73606 = r73604 <= r73605;
double r73607 = 1.0;
double r73608 = 2.0;
double r73609 = r73607 / r73608;
double r73610 = c;
double r73611 = r73610 / r73604;
double r73612 = a;
double r73613 = r73604 / r73612;
double r73614 = r73611 - r73613;
double r73615 = r73608 * r73614;
double r73616 = r73609 * r73615;
double r73617 = -7.499564665356541e-290;
bool r73618 = r73604 <= r73617;
double r73619 = -r73604;
double r73620 = r73604 * r73604;
double r73621 = 4.0;
double r73622 = r73612 * r73610;
double r73623 = r73621 * r73622;
double r73624 = r73620 - r73623;
double r73625 = sqrt(r73624);
double r73626 = r73619 + r73625;
double r73627 = r73608 * r73612;
double r73628 = r73607 / r73627;
double r73629 = r73626 * r73628;
double r73630 = 2.043334298601045e+53;
bool r73631 = r73604 <= r73630;
double r73632 = r73619 - r73625;
double r73633 = r73607 * r73632;
double r73634 = r73633 / r73610;
double r73635 = r73634 / r73621;
double r73636 = r73607 / r73635;
double r73637 = r73609 * r73636;
double r73638 = -2.0;
double r73639 = r73638 * r73611;
double r73640 = r73609 * r73639;
double r73641 = r73631 ? r73637 : r73640;
double r73642 = r73618 ? r73629 : r73641;
double r73643 = r73606 ? r73616 : r73642;
return r73643;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.3 |
|---|---|
| Target | 20.6 |
| Herbie | 7.0 |
if b < -4.2975228517561493e+130Initial program 54.6
rmApplied flip-+63.7
Simplified62.6
rmApplied *-un-lft-identity62.6
Applied *-un-lft-identity62.6
Applied times-frac62.6
Applied times-frac62.6
Simplified62.6
Simplified62.7
rmApplied clear-num62.7
Simplified62.4
Taylor expanded around -inf 2.8
Simplified2.8
if -4.2975228517561493e+130 < b < -7.499564665356541e-290Initial program 9.2
rmApplied div-inv9.4
if -7.499564665356541e-290 < b < 2.043334298601045e+53Initial program 29.9
rmApplied flip-+30.0
Simplified16.2
rmApplied *-un-lft-identity16.2
Applied *-un-lft-identity16.2
Applied times-frac16.2
Applied times-frac16.2
Simplified16.2
Simplified21.7
rmApplied clear-num21.8
Simplified9.0
if 2.043334298601045e+53 < b Initial program 57.4
rmApplied flip-+57.4
Simplified29.4
rmApplied *-un-lft-identity29.4
Applied *-un-lft-identity29.4
Applied times-frac29.4
Applied times-frac29.4
Simplified29.4
Simplified29.0
rmApplied clear-num29.1
Simplified26.3
Taylor expanded around inf 4.1
Final simplification7.0
herbie shell --seed 2019362
(FPCore (a b c)
:name "quadp (p42, positive)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))