\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.28391183709975701 \cdot 10^{106}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.16764411094466422 \cdot 10^{-83}:\\
\;\;\;\;\frac{\frac{1}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{\frac{2 \cdot a}{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}}\\
\mathbf{elif}\;b \le -5.52775192595066085 \cdot 10^{-141}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 3.59909590090097915 \cdot 10^{53}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r97900 = b;
double r97901 = -r97900;
double r97902 = r97900 * r97900;
double r97903 = 4.0;
double r97904 = a;
double r97905 = c;
double r97906 = r97904 * r97905;
double r97907 = r97903 * r97906;
double r97908 = r97902 - r97907;
double r97909 = sqrt(r97908);
double r97910 = r97901 - r97909;
double r97911 = 2.0;
double r97912 = r97911 * r97904;
double r97913 = r97910 / r97912;
return r97913;
}
double f(double a, double b, double c) {
double r97914 = b;
double r97915 = -4.283911837099757e+106;
bool r97916 = r97914 <= r97915;
double r97917 = -1.0;
double r97918 = c;
double r97919 = r97918 / r97914;
double r97920 = r97917 * r97919;
double r97921 = -1.1676441109446642e-83;
bool r97922 = r97914 <= r97921;
double r97923 = 1.0;
double r97924 = r97914 * r97914;
double r97925 = 4.0;
double r97926 = a;
double r97927 = r97926 * r97918;
double r97928 = r97925 * r97927;
double r97929 = r97924 - r97928;
double r97930 = sqrt(r97929);
double r97931 = r97930 - r97914;
double r97932 = sqrt(r97931);
double r97933 = r97923 / r97932;
double r97934 = 2.0;
double r97935 = r97934 * r97926;
double r97936 = r97928 / r97932;
double r97937 = r97935 / r97936;
double r97938 = r97933 / r97937;
double r97939 = -5.527751925950661e-141;
bool r97940 = r97914 <= r97939;
double r97941 = 3.599095900900979e+53;
bool r97942 = r97914 <= r97941;
double r97943 = -r97914;
double r97944 = r97943 - r97930;
double r97945 = r97944 / r97935;
double r97946 = -2.0;
double r97947 = r97946 * r97914;
double r97948 = r97947 / r97935;
double r97949 = r97942 ? r97945 : r97948;
double r97950 = r97940 ? r97920 : r97949;
double r97951 = r97922 ? r97938 : r97950;
double r97952 = r97916 ? r97920 : r97951;
return r97952;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 20.8 |
| Herbie | 10.1 |
if b < -4.283911837099757e+106 or -1.1676441109446642e-83 < b < -5.527751925950661e-141Initial program 54.5
Taylor expanded around -inf 8.4
if -4.283911837099757e+106 < b < -1.1676441109446642e-83Initial program 42.9
rmApplied flip--42.9
Simplified15.2
Simplified15.2
rmApplied add-sqr-sqrt15.3
Applied *-un-lft-identity15.3
Applied times-frac15.4
Applied associate-/l*14.5
Simplified14.5
if -5.527751925950661e-141 < b < 3.599095900900979e+53Initial program 12.0
if 3.599095900900979e+53 < b Initial program 38.5
rmApplied flip--62.0
Simplified61.3
Simplified61.3
Taylor expanded around 0 5.4
Final simplification10.1
herbie shell --seed 2020043
(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)))