Od czasu do czasu otrzymuję wyjątek stackoverflow w tej metodzie.Przyczyna przepełnienia stosu w tej metodzie (zmiennoprzecinkowa)
double norm_cdf(const double x) {
double k = 1.0/(1.0 + 0.2316419*x);
double k_sum = k*(0.319381530 + k*(-0.356563782 + k*(1.781477937 + k*(-1.821255978 + 1.330274429*k))));
if (x >= 0.0) {
return (1.0 - (1.0/(pow(2*M_PI,0.5)))*exp(-0.5*x*x) * k_sum);
} else {
return 1.0 - norm_cdf(-x);
}
}
Jakieś sugestie, dlaczego mogę je otrzymywać? Jakie kroki mogę podjąć, aby naprawić błąd?
Nie sięgnął w głąb swojej logiki jeszcze, ale to, co podejrzewam, że '1.0 - norm_cdf (-x)' wytwarza negatywny wynik dla jakiegoś powodu od czasu do czasu, który mógłby doprowadzić do nieograniczonej rekursji – StephenTG
Aby potwierdzić, czy masz kilka przykładowych danych wejściowych, które wyzwalają wyjątek SO? – StephenTG
Naprawdę nie ma potrzeby rekursji na ten problem ... –