ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/freemol/trunk/src/mengine/src/utility.c
Revision: 3
Committed: Mon Jun 9 21:38:26 2008 UTC (11 years, 11 months ago) by tjod
Original Path: trunk/smi23d/src/mengine/utility.c
File size: 6156 byte(s)
Log Message:
test

Line User Rev File contents
1 tjod 3 #define EXTERN extern
2     #include "pcwin.h"
3     #include "pcmod.h"
4     #include "utility.h"
5     void pcmfout(int);
6    
7     void message_alert(char *, char *);
8    
9     /* Routines to allocate and free space */
10     /* ---------------------------------- */
11     float *vector( int nl, int nh)
12     {
13     float *v;
14    
15     v = (float *)malloc((unsigned) (nh-nl+1)*sizeof(float));
16     if (!v)
17     {
18     message_alert("Error allocation fmemory. Please contact Serena Software. The program will now exit!","Utility");
19     fprintf(pcmoutfile,"error allocating float vector\n");
20     pcmfout(2);
21     exit(0);
22     }
23     return v-nl;
24     }
25     /* ---------------------------------- */
26     int *ivector( int nl, int nh)
27     {
28     int *v;
29    
30     v = ( int *)malloc((unsigned) (nh-nl+1)*sizeof( int));
31     if (!v)
32     {
33     message_alert("Error allocation imemory. Please contact Serena Software. The program will now exit!","Utility");
34     fprintf(pcmoutfile,"error allocating int vector\n");
35     pcmfout(2);
36     exit(0);
37     }
38     return v-nl;
39     }
40     /* ---------------------------------- */
41     long int *ilvector( int nl, int nh)
42     {
43     long int *v;
44    
45     v = (long int *)malloc((unsigned) (nh-nl+1)*sizeof(long int));
46     if (!v)
47     {
48     message_alert("Error allocation imemory. Please contact Serena Software. The program will now exit!","Utility");
49     fprintf(pcmoutfile,"error allocating int vector\n");
50     pcmfout(2);
51     exit(0);
52     }
53     return v-nl;
54     }
55     /* ---------------------------------- */
56     double *dvector( int nl, int nh)
57     {
58     double *v;
59    
60     v = (double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
61     if (!v)
62     {
63     char hatext[128];
64     sprintf(hatext,"Error allocation dmemory. Size %d\n",nh);
65     message_alert(hatext,"Utility");
66     fprintf(pcmoutfile,"error allocating double vector\n");
67     pcmfout(2);
68     exit(0);
69     }
70     return v-nl;
71     }
72     /* ---------------------------------- */
73    
74     float **matrix( int nrl, int nrh, int ncl, int nch)
75     {
76     int i;
77     float **m;
78    
79     m = (float **)malloc((unsigned) (nrh-nrl+1)*sizeof(float*));
80     if (!m)
81     {
82     message_alert("Error allocation farray. Please contact Serena Software. The program will now exit!","Utility");
83     fprintf(pcmoutfile,"error allocating float array\n");
84     pcmfout(2);
85     exit(0);
86     }
87     m -= nrl;
88    
89     for (i = nrl; i <= nrh; i++)
90     {
91     m[i] = (float *)malloc((unsigned) (nch-ncl+1)*sizeof(float));
92     if (!m[i])
93     {
94     message_alert("Error allocation farray. Please contact Serena Software. The program will now exit!","Utility");
95     fprintf(pcmoutfile,"error allocating float array\n");
96     pcmfout(2);
97     exit(0);
98     }
99     m[i] -= ncl;
100     }
101     return m;
102     }
103     /* ---------------------------------- */
104    
105     double **dmatrix( int nrl, int nrh, int ncl, int nch)
106     {
107     int i;
108     double **m;
109    
110     m = (double **)malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
111     if (!m)
112     {
113     message_alert("Error allocation darray. Please contact Serena Software. The program will now exit!","Utility");
114     fprintf(pcmoutfile,"error allocating double array\n");
115     pcmfout(2);
116     exit(0);
117     }
118     m -= nrl;
119    
120     for (i = nrl; i <= nrh; i++)
121     {
122     m[i] = (double *)malloc((unsigned) (nch-ncl+1)*sizeof(double));
123     if (!m[i])
124     {
125     message_alert("Error allocation darray. Please contact Serena Software. The program will now exit!","Utility");
126     fprintf(pcmoutfile,"error allocating double array\n");
127     pcmfout(2);
128     exit(0);
129     }
130     m[i] -= ncl;
131     }
132     return m;
133     }
134     /* ---------------------------------- */
135    
136     int **imatrix( int nrl, int nrh, int ncl, int nch)
137     {
138     int i, **m;
139    
140     m = ( int **)malloc((unsigned) (nrh-nrl+1)*sizeof( int*));
141     if (!m)
142     {
143     message_alert("Error allocation iarray. Please contact Serena Software. The program will now exit!","Utility");
144     fprintf(pcmoutfile,"error allocating array\n");
145     pcmfout(2);
146     exit(0);
147     }
148     m -= nrl;
149    
150     for (i = nrl; i <= nrh; i++)
151     {
152     m[i] = ( int *)malloc((unsigned) (nch-ncl+1)*sizeof( int));
153     if (!m[i])
154     {
155     message_alert("Error allocation farray. Please contact Serena Software. The program will now exit!","Utility");
156     fprintf(pcmoutfile,"error allocating array\n");
157     pcmfout(2);
158     exit(0);
159     }
160     m[i] -= ncl;
161     }
162     return m;
163     }
164     /* ---------------------------------- */
165     void free_vector(float *v, int nl, int nh)
166     {
167     free((char*) (v+nl));
168     }
169    
170     void free_ivector( int *v, int nl, int nh)
171     {
172     free((char*) (v+nl));
173     }
174     void free_ilvector( long int *v, int nl, int nh)
175     {
176     free((char*) (v+nl));
177     }
178    
179     void free_dvector(double *v, int nl, int nh)
180     {
181     free((char*) (v+nl));
182     }
183    
184     void free_matrix(float **m, int nrl, int nrh, int ncl, int nch)
185     {
186     int i;
187     for (i=nrh; i >= nrl; i--)
188     {
189     free((char*) (m[i]+ncl));
190     }
191     free((char*) (m+nrl));
192     }
193    
194     void free_imatrix( int **m, int nrl, int nrh, int ncl, int nch)
195     {
196     int i;
197     for (i=nrh; i >= nrl; i--)
198     {
199     free((char*) (m[i]+ncl));
200     }
201     free((char*) (m+nrl));
202     }
203    
204     void free_dmatrix(double **m, int nrl, int nrh, int ncl, int nch)
205     {
206     int i;
207     for (i=nrh; i >= nrl; i--)
208     {
209     free((char*) (m[i]+ncl));
210     }
211     free((char*) (m+nrl));
212     }
213