\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.361733299857302083043096878302889042354 \cdot 10^{105}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 3.09136118080059703772253670927164991568 \cdot 10^{-86}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} + \left(-b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r59738 = b;
double r59739 = -r59738;
double r59740 = r59738 * r59738;
double r59741 = 4.0;
double r59742 = a;
double r59743 = c;
double r59744 = r59742 * r59743;
double r59745 = r59741 * r59744;
double r59746 = r59740 - r59745;
double r59747 = sqrt(r59746);
double r59748 = r59739 + r59747;
double r59749 = 2.0;
double r59750 = r59749 * r59742;
double r59751 = r59748 / r59750;
return r59751;
}
double f(double a, double b, double c) {
double r59752 = b;
double r59753 = -1.361733299857302e+105;
bool r59754 = r59752 <= r59753;
double r59755 = 1.0;
double r59756 = c;
double r59757 = r59756 / r59752;
double r59758 = a;
double r59759 = r59752 / r59758;
double r59760 = r59757 - r59759;
double r59761 = r59755 * r59760;
double r59762 = 3.091361180800597e-86;
bool r59763 = r59752 <= r59762;
double r59764 = r59752 * r59752;
double r59765 = 4.0;
double r59766 = r59765 * r59756;
double r59767 = r59758 * r59766;
double r59768 = r59764 - r59767;
double r59769 = sqrt(r59768);
double r59770 = -r59752;
double r59771 = r59769 + r59770;
double r59772 = 2.0;
double r59773 = r59772 * r59758;
double r59774 = r59771 / r59773;
double r59775 = -1.0;
double r59776 = r59775 * r59757;
double r59777 = r59763 ? r59774 : r59776;
double r59778 = r59754 ? r59761 : r59777;
return r59778;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 21.1 |
| Herbie | 10.3 |
if b < -1.361733299857302e+105Initial program 48.6
Taylor expanded around -inf 3.6
Simplified3.6
if -1.361733299857302e+105 < b < 3.091361180800597e-86Initial program 12.2
rmApplied *-un-lft-identity12.2
Applied associate-*l*12.2
Simplified12.2
if 3.091361180800597e-86 < b Initial program 51.8
Taylor expanded around inf 10.7
Final simplification10.3
herbie shell --seed 2019322 +o rules:numerics
(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)))