\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 -3.263941314600607 \cdot 10^{+152}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 1.8378252714625124 \cdot 10^{-19}:\\
\;\;\;\;\frac{\left(\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b\right) \cdot \frac{1}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1261853 = b;
double r1261854 = -r1261853;
double r1261855 = r1261853 * r1261853;
double r1261856 = 4.0;
double r1261857 = a;
double r1261858 = c;
double r1261859 = r1261857 * r1261858;
double r1261860 = r1261856 * r1261859;
double r1261861 = r1261855 - r1261860;
double r1261862 = sqrt(r1261861);
double r1261863 = r1261854 + r1261862;
double r1261864 = 2.0;
double r1261865 = r1261864 * r1261857;
double r1261866 = r1261863 / r1261865;
return r1261866;
}
double f(double a, double b, double c) {
double r1261867 = b;
double r1261868 = -3.263941314600607e+152;
bool r1261869 = r1261867 <= r1261868;
double r1261870 = c;
double r1261871 = r1261870 / r1261867;
double r1261872 = a;
double r1261873 = r1261867 / r1261872;
double r1261874 = r1261871 - r1261873;
double r1261875 = 1.8378252714625124e-19;
bool r1261876 = r1261867 <= r1261875;
double r1261877 = r1261867 * r1261867;
double r1261878 = 4.0;
double r1261879 = r1261872 * r1261878;
double r1261880 = r1261879 * r1261870;
double r1261881 = r1261877 - r1261880;
double r1261882 = sqrt(r1261881);
double r1261883 = r1261882 - r1261867;
double r1261884 = 0.5;
double r1261885 = r1261883 * r1261884;
double r1261886 = r1261885 / r1261872;
double r1261887 = -r1261871;
double r1261888 = r1261876 ? r1261886 : r1261887;
double r1261889 = r1261869 ? r1261874 : r1261888;
return r1261889;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.3 |
|---|---|
| Target | 20.3 |
| Herbie | 10.3 |
if b < -3.263941314600607e+152Initial program 60.1
Simplified60.1
rmApplied div-inv60.1
Simplified60.1
Taylor expanded around -inf 2.3
if -3.263941314600607e+152 < b < 1.8378252714625124e-19Initial program 14.2
Simplified14.1
rmApplied div-inv14.3
Simplified14.3
rmApplied associate-*r/14.1
if 1.8378252714625124e-19 < b Initial program 54.4
Simplified54.4
rmApplied div-inv54.4
Simplified54.4
Taylor expanded around inf 7.0
Simplified7.0
Final simplification10.3
herbie shell --seed 2019128
(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)))