/* * -- SuperLU routine (version 2.0) -- * Univ. of California Berkeley, Xerox Palo Alto Research Center, * and Lawrence Berkeley National Lab. * November 15, 1997 * */ #include #include #include "slu_ddefs.h" /* Eat up the rest of the current line */ int dDumpLine(FILE *fp) { register int c; while ((c = fgetc(fp)) != '\n') ; return 0; } int dParseIntFormat(char *buf, int *num, int *size) { char *tmp; tmp = buf; while (*tmp++ != '(') ; sscanf(tmp, "%d", num); while (*tmp != 'I' && *tmp != 'i') ++tmp; ++tmp; sscanf(tmp, "%d", size); return 0; } int dParseFloatFormat(char *buf, int *num, int *size) { char *tmp, *period; tmp = buf; while (*tmp++ != '(') ; *num = atoi(tmp); /*sscanf(tmp, "%d", num);*/ while (*tmp != 'E' && *tmp != 'e' && *tmp != 'D' && *tmp != 'd' && *tmp != 'F' && *tmp != 'f') { /* May find kP before nE/nD/nF, like (1P6F13.6). In this case the num picked up refers to P, which should be skipped. */ if (*tmp=='p' || *tmp=='P') { ++tmp; *num = atoi(tmp); /*sscanf(tmp, "%d", num);*/ } else { ++tmp; } } ++tmp; period = tmp; while (*period != '.' && *period != ')') ++period ; *period = '\0'; *size = atoi(tmp); /*sscanf(tmp, "%2d", size);*/ return 0; } int dReadVector(FILE *fp, int n, int *where, int perline, int persize) { register int i, j, item; char tmp, buf[100]; i = 0; while (i < n) { fgets(buf, 100, fp); /* read a line at a time */ for (j=0; j