comparison hmm/hmm.c @ 58:d72fcd34d9a7

* Fixes to problems shown up by vamp-plugin-tester. Still not all plugins pass all tests, though
author cannam
date Mon, 23 Mar 2009 16:28:53 +0000
parents 03abd5957853
children 054c384d860d
comparison
equal deleted inserted replaced
57:d241e7701c0c 58:d72fcd34d9a7
176 int foundnan = 0; 176 int foundnan = 0;
177 177
178 while (iter < niter && !foundnan && !(iter > 1 && (loglik - loglik1) < thresh * (loglik1 - loglik2))) 178 while (iter < niter && !foundnan && !(iter > 1 && (loglik - loglik1) < thresh * (loglik1 - loglik2)))
179 { 179 {
180 ++iter; 180 ++iter;
181 181 /*
182 fprintf(stderr, "calculating obsprobs...\n"); 182 fprintf(stderr, "calculating obsprobs...\n");
183 fflush(stderr); 183 fflush(stderr);
184 184 */
185 /* precalculate obs probs */ 185 /* precalculate obs probs */
186 invert(cov, L, icov, &detcov); 186 invert(cov, L, icov, &detcov);
187 187
188 for (t = 0; t < T; t++) 188 for (t = 0; t < T; t++)
189 { 189 {
204 b[t][i] = 0.00001; 204 b[t][i] = 0.00001;
205 } 205 }
206 } 206 }
207 */ 207 */
208 } 208 }
209 209 /*
210 fprintf(stderr, "forwards-backwards...\n"); 210 fprintf(stderr, "forwards-backwards...\n");
211 fflush(stderr); 211 fflush(stderr);
212 212 */
213 forward_backwards(xi, gamma, &loglik, &loglik1, &loglik2, iter, N, T, p0, a, b); 213 forward_backwards(xi, gamma, &loglik, &loglik1, &loglik2, iter, N, T, p0, a, b);
214 214 /*
215 fprintf(stderr, "iteration %d: loglik = %f\n", iter, loglik); 215 fprintf(stderr, "iteration %d: loglik = %f\n", iter, loglik);
216 fprintf(stderr, "re-estimation...\n"); 216 fprintf(stderr, "re-estimation...\n");
217 fflush(stderr); 217 fflush(stderr);
218 218 */
219 if (isnan(loglik)) { 219 if (isnan(loglik)) {
220 foundnan = 1; 220 foundnan = 1;
221 continue; 221 continue;
222 } 222 }
223 223
291 291
292 for (i = 0; i < N; i++) 292 for (i = 0; i < N; i++)
293 { 293 {
294 if (sum_gamma[i] == 0) 294 if (sum_gamma[i] == 0)
295 { 295 {
296 fprintf(stderr, "sum_gamma[%d] was zero...\n", i); 296 /* fprintf(stderr, "sum_gamma[%d] was zero...\n", i); */
297 } 297 }
298 //double s = 0; 298 //double s = 0;
299 for (j = 0; j < N; j++) 299 for (j = 0; j < N; j++)
300 { 300 {
301 a[i][j] = 0; 301 a[i][j] = 0;