#include #include /* allocate a double vector with subscript range v[nl..nh] */ double *vector(long size) { double *v; v = (double *)malloc((size_t)((size + 1) * sizeof(double))); if(v == NULL) fprintf(stderr, "Error : allocation failure in vector().\n"); return v; } /* free a double vector allocated with vector() */ void free_vector(double *v) { free((char *)v); } /* allocate a double matrix with subscript range m[nrl..nrh][ncl..nch] */ double **matrix(long rsize, long csize) { double **m, **p; long i; m = (double **)malloc((size_t)(rsize * sizeof(double *))); if(m == NULL) fprintf(stderr, "Error : allocation failure 1 in matrix().\n"); *m = (double *)malloc((size_t)(rsize * csize * sizeof(double))); if(*m == NULL) fprintf(stderr, "Error : allocation failure 2 in matrix().\n"); for(p = m, i = 1; i < rsize; i++, p++) *(p + 1) = *p + csize; return m; } /* free a double matrix allocated by matrix() */ void free_matrix(double **m) { free((char *)*m); free((char *)m); }