#include #include int *ivector(long size) /* 配列v[]用 動的メモリ確保 */ { int *v; v=(int *)malloc((size_t) ((size+1)*sizeof(int))); // 1個余分に確保 return v; // サイズがsで先頭アドレスがaなら,a〜a+s-1の範囲が使って良い領域です。 } double *vector(long size) /* 配列v[]用 動的メモリ確保 */ { double *v; v=(double *)malloc((size_t) ((size+1)*sizeof(double))); // 1個余分に確保 return v; // サイズがsで先頭アドレスがaなら,a〜a+s-1の範囲が使って良い領域です。 } void free_vector(double *v) /* メモリ領域開放 */ { free((char*) v); } void free_ivector(int *v) /* メモリ領域開放 */ { free((char*) v); } double **matrix(long rows, long cols) { double **m, **p; long i; m = (double **)malloc((size_t)(rows * sizeof(double *))); if(m == NULL) printf("Error : allocation failure 1 in matrix().\n"); *m = (double *)malloc((size_t)(rows * cols * sizeof(double))); if(*m == NULL) printf("Error : allocation failure 2 in matrix().\n"); for(p = m, i = 1; i < rows; i++, p++) *(p + 1) = *p + cols; return m; } void free_matrix(double **m) { free(m); } void nrerror(char error_text[]) { fprintf(stderr,"Numerical Recipes run-time error...\n"); fprintf(stderr,"%s\n",error_text); fprintf(stderr,"...now exiting to system...\n"); exit(1); }