malt-wr
qnrutil.c
Go to the documentation of this file.
1 /* Array and matrix assignment routines from numerical recipes */
2 #include <stdio.h>
3 #include <stdlib.h>
4 
5 #include "lineread.h"
6 
7 
8 int *ivector(int nl,int nh)
9 {
10  int *v;
11  v=(int *)malloc((unsigned) (nh-nl+1)*sizeof(int));
12  if (!v) nrerror("allocation failure in ivector()");
13  return v-nl;
14 }
15 
16 double *vector(int nl,int nh)
17 {
18  double *v;
19  v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
20  if (!v) nrerror("allocation failure in vector()");
21  return v-nl;
22 }
23 
24 int **imatrix(int nrl,int nrh, int ncl, int nch)
25 {
26  int i, **m;
27 
28  m=(int **) malloc((unsigned) (nrh-nrl+1)*sizeof(int*));
29  if (!m) nrerror("allocation failure 1 in imatrix()");
30  m -= nrl;
31 
32  for(i=nrl;i<=nrh;i++) {
33  m[i]=(int *) malloc((unsigned) (nch-ncl+1)*sizeof(int));
34  if (!m[i]) nrerror("allocation failure 2 in imatrix()");
35  m[i] -= ncl;
36  }
37  return m;
38 }
39 
40 double **matrix(int nrl,int nrh, int ncl, int nch)
41 {
42  int i;
43  double **m;
44 
45  m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
46  if (!m) nrerror("allocation failure 1 in matrix()");
47  m -= nrl;
48 
49  for(i=nrl;i<=nrh;i++) {
50  m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
51  if (!m[i]) nrerror("allocation failure 2 in matrix()");
52  m[i] -= ncl;
53  }
54  return m;
55 }
56 
57 int **ireallocmatrix(int **oldm,int nrl,int nrh,int newnrh,int ncl,int nch)
58 {
59  int i, **m;
60 
61  m=(int **) realloc((char*) (oldm+nrl), (unsigned) (newnrh-nrl+1)*sizeof(int*));
62  if (!m) nrerror("allocation failure 1 in imatrix()");
63  m -= nrl;
64 
65  for(i=nrh+1;i<=newnrh;i++) {
66  m[i]=(int *) malloc((unsigned) (nch-ncl+1)*sizeof(int));
67  if (!m[i]) nrerror("allocation failure 2 in imatrix()");
68  m[i] -= ncl;
69  }
70  return m;
71 }
72 
73 double **reallocmatrix(double **oldm, int nrl,int nrh, int newnrh, int ncl, int nch)
74 {
75  int i;
76  double **m;
77 
78  m=(double **) realloc((char*) (oldm+nrl), (unsigned) (newnrh-nrl+1)*sizeof(double*));
79  if (!m) nrerror("allocation failure 1 in matrix()");
80  m -= nrl;
81 
82  for(i=nrh+1;i<=newnrh;i++) {
83  m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
84  if (!m[i]) nrerror("allocation failure 2 in matrix()");
85  m[i] -= ncl;
86  }
87  return m;
88 }
89 
90 void free_ivector(int *v,int nl,int nh)
91 {
92  free((char*) (v+nl));
93 }
94 
95 void free_vector(double *v,int nl,int nh)
96 {
97  free((char*) (v+nl));
98 }
99 
100 void free_imatrix(int **m,int nrl,int nrh,int ncl,int nch)
101 {
102  int i;
103 
104  for(i=nrh;i>=nrl;i--) free((char *) (m[i]+ncl));
105  free((char*) (m+nrl));
106 }
107 
108 void free_matrix(double **m,int nrl,int nrh,int ncl,int nch)
109 {
110  int i;
111 
112  for(i=nrh;i>=nrl;i--) free((char *) (m[i]+ncl));
113  free((char*) (m+nrl));
114 }
int * ivector(int nl, int nh)
Definition: qnrutil.c:8
double ** reallocmatrix(double **oldm, int nrl, int nrh, int newnrh, int ncl, int nch)
Definition: qnrutil.c:73
void free_vector(double *v, int nl, int nh)
Definition: qnrutil.c:95
void nrerror(char *error_text)
Definition: lineread.c:7
double * vector(int nl, int nh)
Definition: qnrutil.c:16
void free_imatrix(int **m, int nrl, int nrh, int ncl, int nch)
Definition: qnrutil.c:100
void free_ivector(int *v, int nl, int nh)
Definition: qnrutil.c:90
void free_matrix(double **m, int nrl, int nrh, int ncl, int nch)
Definition: qnrutil.c:108
int ** imatrix(int nrl, int nrh, int ncl, int nch)
Definition: qnrutil.c:24
double ** matrix(int nrl, int nrh, int ncl, int nch)
Definition: qnrutil.c:40
int ** ireallocmatrix(int **oldm, int nrl, int nrh, int newnrh, int ncl, int nch)
Definition: qnrutil.c:57