home *** CD-ROM | disk | FTP | other *** search
/ vis-ftp.cs.umass.edu / vis-ftp.cs.umass.edu.tar / vis-ftp.cs.umass.edu / pub / Software / ASCENDER / ascender.tar.Z / ascender.tar / Triangulate / NRroutines.c < prev    next >
C/C++ Source or Header  |  1995-04-13  |  3KB  |  188 lines

  1. #include <stdio.h>
  2.  
  3. #define TINY 1.0e-20;
  4.  
  5. void nrerror(error_text)
  6. char error_text[];
  7. {
  8.     void exit();
  9.  
  10.     fprintf(stderr,"Numerical Recipes run-time error...\n");
  11.     fprintf(stderr,"%s\n",error_text);
  12.     fprintf(stderr,"...now exiting to system...\n");
  13.     return;
  14. }
  15.  
  16.  
  17.  
  18. float *vector(int nl,int nh)
  19. {
  20.     float *v;
  21.  
  22.     v=(float *)malloc((unsigned) (nh-nl+1)*sizeof(float));
  23.     if (!v) nrerror("allocation failure in vector()");
  24.     return v-nl;
  25. }
  26.  
  27. int *ivector(int nl,int nh)
  28. {
  29.     int *v;
  30.  
  31.     v=(int *)malloc((unsigned) (nh-nl+1)*sizeof(int));
  32.     if (!v) nrerror("allocation failure in ivector()");
  33.     return v-nl;
  34. }
  35.  
  36. double *dvector(int nl,int nh)
  37. {
  38.     double *v;
  39.  
  40.     v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
  41.     if (!v) nrerror("allocation failure in dvector()");
  42.     return v-nl;
  43. }
  44.  
  45.  
  46.  
  47. float **matrix(int nrl,int nrh,int ncl,int nch)
  48. {
  49.     int i;
  50.     float **m;
  51.  
  52.     m=(float **) malloc((unsigned) (nrh-nrl+1)*sizeof(float*));
  53.     if (!m) nrerror("allocation failure 1 in matrix()");
  54.     m -= nrl;
  55.  
  56.     for(i=nrl;i<=nrh;i++) {
  57.         m[i]=(float *) malloc((unsigned) (nch-ncl+1)*sizeof(float));
  58.         if (!m[i]) nrerror("allocation failure 2 in matrix()");
  59.         m[i] -= ncl;
  60.     }
  61.     return m;
  62. }
  63.  
  64. double **dmatrix(int nrl,int nrh,int ncl,int nch)
  65. {
  66.     int i;
  67.     double **m;
  68.  
  69.     m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
  70.     if (!m) nrerror("allocation failure 1 in dmatrix()");
  71.     m -= nrl;
  72.  
  73.     for(i=nrl;i<=nrh;i++) {
  74.         m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
  75.         if (!m[i]) nrerror("allocation failure 2 in dmatrix()");
  76.         m[i] -= ncl;
  77.     }
  78.     return m;
  79. }
  80.  
  81. int **imatrix(int nrl,int nrh,int ncl,int nch)
  82. {
  83.     int i,**m;
  84.  
  85.     m=(int **)malloc((unsigned) (nrh-nrl+1)*sizeof(int*));
  86.     if (!m) nrerror("allocation failure 1 in imatrix()");
  87.     m -= nrl;
  88.  
  89.     for(i=nrl;i<=nrh;i++) {
  90.         m[i]=(int *)malloc((unsigned) (nch-ncl+1)*sizeof(int));
  91.         if (!m[i]) nrerror("allocation failure 2 in imatrix()");
  92.         m[i] -= ncl;
  93.     }
  94.     return m;
  95. }
  96.  
  97.  
  98.  
  99. float **submatrix(float **a,int oldrl,int oldrh,int oldcl,
  100.           int oldch,int newrl,int newcl)
  101. {
  102.     int i,j;
  103.     float **m;
  104.  
  105.     m=(float **) malloc((unsigned) (oldrh-oldrl+1)*sizeof(float*));
  106.     if (!m) nrerror("allocation failure in submatrix()");
  107.     m -= newrl;
  108.  
  109.     for(i=oldrl,j=newrl;i<=oldrh;i++,j++) m[j]=a[i]+oldcl-newcl;
  110.  
  111.     return m;
  112. }
  113.  
  114.  
  115.  
  116. void free_vector(float *v,int nl,int nh)
  117. {
  118.     free((char*) (v+nl));
  119. }
  120.  
  121. void free_ivector(int *v,int nl,int nh)
  122. {
  123.     free((char*) (v+nl));
  124. }
  125.  
  126. void free_dvector(double *v,int nl,int nh)
  127. {
  128.     free((char*) (v+nl));
  129. }
  130.  
  131.  
  132.  
  133. void free_matrix(float **m,int nrl,int nrh,int ncl,int nch)
  134. {
  135.     int i;
  136.  
  137.     for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
  138.     free((char*) (m+nrl));
  139. }
  140.  
  141. void free_dmatrix(double **m,int nrl,int nrh,int ncl,int nch)
  142. {
  143.     int i;
  144.  
  145.     for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
  146.     free((char*) (m+nrl));
  147. }
  148.  
  149. void free_imatrix(int **m,int nrl,int nrh,int ncl,int nch)
  150. {
  151.     int i;
  152.  
  153.     for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
  154.     free((char*) (m+nrl));
  155. }
  156.  
  157.  
  158.  
  159. void free_submatrix(float **b,int nrl,int nrh,int ncl,int nch)
  160. {
  161.     free((char*) (b+nrl));
  162. }
  163.  
  164.  
  165.  
  166. float **convert_matrix(float *a,int nrl,int nrh,int ncl,int nch)
  167. {
  168.     int i,j,nrow,ncol;
  169.     float **m;
  170.  
  171.     nrow=nrh-nrl+1;
  172.     ncol=nch-ncl+1;
  173.     m = (float **) malloc((unsigned) (nrow)*sizeof(float*));
  174.     if (!m) nrerror("allocation failure in convert_matrix()");
  175.     m -= nrl;
  176.     for(i=0,j=nrl;i<=nrow-1;i++,j++) m[j]=a+ncol*i-ncl;
  177.     return m;
  178. }
  179.  
  180.  
  181.  
  182. void free_convert_matrix(float **b,int nrl,int nrh,int ncl,int nch)
  183. {
  184.     free((char*) (b+nrl));
  185. }
  186.  
  187.  
  188.