int random_number_in_range (int min, int max) { TRACEINW("(min=%d max=%d)", min, max); int width = max - min + 1; int res = min + (random() % width); TRACEOUTW("%d", res); return res; }
/* blindly double all dimensions */ void enlarge_underlying_mat ( void ) { TRACEIN; assert (xdim == memmatrix_xdim()); assert (ydim == memmatrix_ydim()); realloc_memmatrix (xdim+1, ydim+1, 1+xdim/2, 1+ydim/2, UNUSEDSQ); xdepl += 1+xdim/2; ydepl += 1+ydim/2; xdim += xdim+1; ydim += ydim+1; cboard = memmatrix(xdepl,ydepl); assert (xdim == memmatrix_xdim()); assert (ydim == memmatrix_ydim()); TRACEOUTW ("was %dx%d, now is %dx%d", prev_xdim, prev_ydim, memmatrix_xdim(), memmatrix_ydim()); }
void read_longint_val_in_range (char * s, long int * val, long int range_min, long int range_max, const char * varname) /* varname is used for error messages */ { TRACEINW("(\"%s\",min=%ld,max=%ld)", s, range_min, range_max); char * endptr = NULL; long int res = strtol(s, &endptr, 10); if (*endptr != '\0') { cantcontinue("ERROR: value \"%s\" for %s is not a number.\n", s, varname); } else if (errno == ERANGE) { cantcontinue("ERROR: value \"%s\" for %s cannot be scanned as a long int.\n", s, varname); } else if ((res < range_min) || (res > range_max)) { cantcontinue("ERROR: value %ld for %s not in valid range %ld..%ld.\n", res, varname, range_min, range_max); } val[0] = res; TRACEOUTW("%s=%ld", varname, *val); }