\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.3282248930815427 \cdot 10^{+154}:\\
\;\;\;\;\frac{\frac{c}{\frac{a \cdot c}{b} \cdot 2} \cdot \frac{-4 \cdot a}{a}}{2}\\
\mathbf{elif}\;b \le -2.170460433232697 \cdot 10^{-296}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{a}}{2}\\
\mathbf{elif}\;b \le 7.386841020175994 \cdot 10^{+78}:\\
\;\;\;\;\frac{\frac{-4 \cdot a}{a} \cdot \frac{c}{b + \sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)}}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-4 \cdot a}{a} \cdot \frac{c}{b + b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r2760056 = b;
double r2760057 = -r2760056;
double r2760058 = r2760056 * r2760056;
double r2760059 = 4.0;
double r2760060 = a;
double r2760061 = c;
double r2760062 = r2760060 * r2760061;
double r2760063 = r2760059 * r2760062;
double r2760064 = r2760058 - r2760063;
double r2760065 = sqrt(r2760064);
double r2760066 = r2760057 + r2760065;
double r2760067 = 2.0;
double r2760068 = r2760067 * r2760060;
double r2760069 = r2760066 / r2760068;
return r2760069;
}
double f(double a, double b, double c) {
double r2760070 = b;
double r2760071 = -1.3282248930815427e+154;
bool r2760072 = r2760070 <= r2760071;
double r2760073 = c;
double r2760074 = a;
double r2760075 = r2760074 * r2760073;
double r2760076 = r2760075 / r2760070;
double r2760077 = 2.0;
double r2760078 = r2760076 * r2760077;
double r2760079 = r2760073 / r2760078;
double r2760080 = -4.0;
double r2760081 = r2760080 * r2760074;
double r2760082 = r2760081 / r2760074;
double r2760083 = r2760079 * r2760082;
double r2760084 = r2760083 / r2760077;
double r2760085 = -2.170460433232697e-296;
bool r2760086 = r2760070 <= r2760085;
double r2760087 = r2760070 * r2760070;
double r2760088 = fma(r2760075, r2760080, r2760087);
double r2760089 = sqrt(r2760088);
double r2760090 = r2760089 - r2760070;
double r2760091 = r2760090 / r2760074;
double r2760092 = r2760091 / r2760077;
double r2760093 = 7.386841020175994e+78;
bool r2760094 = r2760070 <= r2760093;
double r2760095 = fma(r2760073, r2760081, r2760087);
double r2760096 = sqrt(r2760095);
double r2760097 = r2760070 + r2760096;
double r2760098 = r2760073 / r2760097;
double r2760099 = r2760082 * r2760098;
double r2760100 = r2760099 / r2760077;
double r2760101 = r2760070 + r2760070;
double r2760102 = r2760073 / r2760101;
double r2760103 = r2760082 * r2760102;
double r2760104 = r2760103 / r2760077;
double r2760105 = r2760094 ? r2760100 : r2760104;
double r2760106 = r2760086 ? r2760092 : r2760105;
double r2760107 = r2760072 ? r2760084 : r2760106;
return r2760107;
}




Bits error versus a




Bits error versus b




Bits error versus c
| Original | 33.6 |
|---|---|
| Target | 21.0 |
| Herbie | 9.0 |
if b < -1.3282248930815427e+154Initial program 60.9
Simplified60.9
rmApplied flip--62.3
Simplified62.5
rmApplied *-un-lft-identity62.5
Applied *-un-lft-identity62.5
Applied *-un-lft-identity62.5
Applied times-frac62.5
Applied times-frac62.5
Simplified62.5
Simplified62.4
Taylor expanded around -inf 21.0
if -1.3282248930815427e+154 < b < -2.170460433232697e-296Initial program 8.7
Simplified8.7
if -2.170460433232697e-296 < b < 7.386841020175994e+78Initial program 30.4
Simplified30.4
rmApplied flip--30.5
Simplified16.7
rmApplied *-un-lft-identity16.7
Applied *-un-lft-identity16.7
Applied *-un-lft-identity16.7
Applied times-frac16.7
Applied times-frac16.7
Simplified16.7
Simplified10.1
if 7.386841020175994e+78 < b Initial program 57.6
Simplified57.6
rmApplied flip--57.7
Simplified30.9
rmApplied *-un-lft-identity30.9
Applied *-un-lft-identity30.9
Applied *-un-lft-identity30.9
Applied times-frac30.9
Applied times-frac30.9
Simplified30.9
Simplified28.6
Taylor expanded around 0 3.0
Final simplification9.0
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "quadp (p42, positive)"
:herbie-target
(if (< b 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)))