+++ /dev/null
-/*
- subroutines to allocate & free memory for
- double and int matrices with arbitrary
- index ranges
-
- from Numerical Recipies
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#define NR_END 1
-#define FREE_ARG char*
-
-void nrerror(char error_text[]);
-
-double **dmatrix(long nrl, long nrh, long ncl, long nch)
-/* allocate a double matrix with subscript range m[nrl..nrh][ncl..nch] */
-{
- long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
- double **m;
-
- /* allocate pointers to rows */
- m=(double **) malloc((size_t)((nrow+NR_END)*sizeof(double*)));
- if (!m) nrerror("allocation failure 1 in matrix()");
- m += NR_END;
- m -= nrl;
-
- /* allocate rows and set pointers to them */
- m[nrl]=(double *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(double)));
- if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
- m[nrl] += NR_END;
- m[nrl] -= ncl;
-
- for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
-
- /* return pointer to array of pointers to rows */
- return m;
-}
-
-
-
-int **imatrix(long nrl, long nrh, long ncl, long nch)
-/* allocate a int matrix with subscript range m[nrl..nrh][ncl..nch] */
-{
- long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
- int **m;
-
- /* allocate pointers to rows */
- m=(int **) malloc((size_t)((nrow+NR_END)*sizeof(int*)));
- if (!m) nrerror("allocation failure 1 in matrix()");
- m += NR_END;
- m -= nrl;
-
-
- /* allocate rows and set pointers to them */
- m[nrl]=(int *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(int)));
- if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
- m[nrl] += NR_END;
- m[nrl] -= ncl;
-
- for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
-
- /* return pointer to array of pointers to rows */
- return m;
-}
-
-
-void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch)
-/* free a double matrix allocated by dmatrix() */
-{
- free((FREE_ARG) (m[nrl]+ncl-NR_END));
- free((FREE_ARG) (m+nrl-NR_END));
-}
-
-
-
-void free_imatrix(int **m, long nrl, long nrh, long ncl, long nch)
-/* free an int matrix allocated by imatrix() */
-{
- free((FREE_ARG) (m[nrl]+ncl-NR_END));
- free((FREE_ARG) (m+nrl-NR_END));
-}
-
-
-void nrerror(char error_text[])
-/* Numerical Recipes standard error handler */
-{
- fprintf(stderr,"Numerical Recipes run-time error...\n");
- fprintf(stderr,"%s\n",error_text);
- fprintf(stderr,"...now exiting to system...\n");
- exit(1);
-}