JPRED-2 Add sources of all binaries (except alscript) to Git
[jpred.git] / sources / multicoil / nrutil.c
1
2 #include <malloc.h>
3 #include <stdio.h>
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         exit(1);
14 }
15
16
17
18 double *vector(nl,nh)
19 int nl,nh;
20 {
21         double *v;
22
23         v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
24         if (!v) nrerror("allocation failure in vector()");
25         return v-nl;
26 }
27
28 int *ivector(nl,nh)
29 int nl,nh;
30 {
31         int *v;
32
33         v=(int *)malloc((unsigned) (nh-nl+1)*sizeof(int));
34         if (!v) nrerror("allocation failure in ivector()");
35         return v-nl;
36 }
37
38 double *dvector(nl,nh)
39 int nl,nh;
40 {
41         double *v;
42
43         v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
44         if (!v) nrerror("allocation failure in dvector()");
45         return v-nl;
46 }
47
48
49
50 double **matrix(nrl,nrh,ncl,nch)
51 int nrl,nrh,ncl,nch;
52 {
53         int i;
54         double **m;
55
56         m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
57         if (!m) nrerror("allocation failure 1 in matrix()");
58         m -= nrl;
59
60         for(i=nrl;i<=nrh;i++) {
61                 m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
62                 if (!m[i]) nrerror("allocation failure 2 in matrix()");
63                 m[i] -= ncl;
64         }
65         return m;
66 }
67
68 double **dmatrix(nrl,nrh,ncl,nch)
69 int nrl,nrh,ncl,nch;
70 {
71         int i;
72         double **m;
73
74         m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
75         if (!m) nrerror("allocation failure 1 in dmatrix()");
76         m -= nrl;
77
78         for(i=nrl;i<=nrh;i++) {
79                 m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
80                 if (!m[i]) nrerror("allocation failure 2 in dmatrix()");
81                 m[i] -= ncl;
82         }
83         return m;
84 }
85
86 int **imatrix(nrl,nrh,ncl,nch)
87 int nrl,nrh,ncl,nch;
88 {
89         int i,**m;
90
91         m=(int **)malloc((unsigned) (nrh-nrl+1)*sizeof(int*));
92         if (!m) nrerror("allocation failure 1 in imatrix()");
93         m -= nrl;
94
95         for(i=nrl;i<=nrh;i++) {
96                 m[i]=(int *)malloc((unsigned) (nch-ncl+1)*sizeof(int));
97                 if (!m[i]) nrerror("allocation failure 2 in imatrix()");
98                 m[i] -= ncl;
99         }
100         return m;
101 }
102
103
104
105 double **submatrix(a,oldrl,oldrh,oldcl,oldch,newrl,newcl)
106 double **a;
107 int oldrl,oldrh,oldcl,oldch,newrl,newcl;
108 {
109         int i,j;
110         double **m;
111
112         m=(double **) malloc((unsigned) (oldrh-oldrl+1)*sizeof(double*));
113         if (!m) nrerror("allocation failure in submatrix()");
114         m -= newrl;
115
116         for(i=oldrl,j=newrl;i<=oldrh;i++,j++) m[j]=a[i]+oldcl-newcl;
117
118         return m;
119 }
120
121
122
123 void free_vector(v,nl,nh)
124 double *v;
125 int nl,nh;
126 {
127         free((char*) (v+nl));
128 }
129
130 void free_ivector(v,nl,nh)
131 int *v,nl,nh;
132 {
133         free((char*) (v+nl));
134 }
135
136 void free_dvector(v,nl,nh)
137 double *v;
138 int nl,nh;
139 {
140         free((char*) (v+nl));
141 }
142
143
144
145 void free_matrix(m,nrl,nrh,ncl,nch)
146 double **m;
147 int nrl,nrh,ncl,nch;
148 {
149         int i;
150
151         for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
152         free((char*) (m+nrl));
153 }
154
155 void free_dmatrix(m,nrl,nrh,ncl,nch)
156 double **m;
157 int nrl,nrh,ncl,nch;
158 {
159         int i;
160
161         for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
162         free((char*) (m+nrl));
163 }
164
165 void free_imatrix(m,nrl,nrh,ncl,nch)
166 int **m;
167 int nrl,nrh,ncl,nch;
168 {
169         int i;
170
171         for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
172         free((char*) (m+nrl));
173 }
174
175
176
177 void free_submatrix(b,nrl,nrh,ncl,nch)
178 double **b;
179 int nrl,nrh,ncl,nch;
180 {
181         free((char*) (b+nrl));
182 }
183
184
185
186 double **convert_matrix(a,nrl,nrh,ncl,nch)
187 double *a;
188 int nrl,nrh,ncl,nch;
189 {
190         int i,j,nrow,ncol;
191         double **m;
192
193         nrow=nrh-nrl+1;
194         ncol=nch-ncl+1;
195         m = (double **) malloc((unsigned) (nrow)*sizeof(double*));
196         if (!m) nrerror("allocation failure in convert_matrix()");
197         m -= nrl;
198         for(i=0,j=nrl;i<=nrow-1;i++,j++) m[j]=a+ncol*i-ncl;
199         return m;
200 }
201
202
203
204 void free_convert_matrix(b,nrl,nrh,ncl,nch)
205 double **b;
206 int nrl,nrh,ncl,nch;
207 {
208         free((char*) (b+nrl));
209 }