/* HTS_Window_load: load dynamic windows */ static void HTS_Window_load(HTS_Window * win, FILE ** fp, int size) { int i, j; int fsize, length; char buff[HTS_MAXBUFLEN]; win->size = size; win->l_width = (int *) HTS_calloc(win->size, sizeof(int)); win->r_width = (int *) HTS_calloc(win->size, sizeof(int)); win->coefficient = (double **) HTS_calloc(win->size, sizeof(double *)); /* set delta coefficents */ for (i = 0; i < win->size; i++) { HTS_get_token(fp[i], buff); fsize = atoi(buff); /* read coefficients */ win->coefficient[i] = (double *) HTS_calloc(fsize, sizeof(double)); for (j = 0; j < fsize; j++) { HTS_get_token(fp[i], buff); win->coefficient[i][j] = strtod_c(buff,NULL); } /* set pointer */ length = fsize / 2; win->coefficient[i] += length; win->l_width[i] = -length; win->r_width[i] = length; if (fsize % 2 == 0) win->r_width[i]--; } /* calcurate max_width to determine size of band matrix */ win->max_width = 0; for (i = 0; i < win->size; i++) { if (win->max_width < abs(win->l_width[i])) win->max_width = abs(win->l_width[i]); if (win->max_width < abs(win->r_width[i])) win->max_width = abs(win->r_width[i]); } }
float strtof_c(const char *nptr, char **endptr) { return (float) strtod_c(nptr, endptr); }