1 /* f2c.h  --  Standard Fortran to C header file */
2 
3 /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
4 
5 	- From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
6 
7 #ifndef F2C_INCLUDE
8 #define F2C_INCLUDE
9 
10 #define NON_UNIX_STDIO     /* RWCox */
11 /*
12 Removed to harmonize with system f2c header
13 #undef complex
14 #define complex complexxx
15 */
16 
17 typedef long int integer;
18 typedef unsigned long uinteger;
19 typedef char *address;
20 typedef short int shortint;
21 typedef float real;
22 typedef double doublereal;
23 typedef struct { real r, i; } complex;
24 typedef struct { doublereal r, i; } doublecomplex;
25 typedef long int logical;
26 typedef short int shortlogical;
27 typedef char logical1;
28 typedef char integer1;
29 #if 0	/* Adjust for integer*8. */
30 typedef long long longint;		/* system-dependent */
31 typedef unsigned long long ulongint;	/* system-dependent */
32 #define qbit_clear(a,b)	((a) & ~((ulongint)1 << (b)))
33 #define qbit_set(a,b)	((a) |  ((ulongint)1 << (b)))
34 #endif
35 
36 #define TRUE_ (1)
37 #define FALSE_ (0)
38 
39 /* Extern is for use with -E */
40 #ifndef Extern
41 #define Extern extern
42 #endif
43 
44 /* I/O stuff */
45 
46 #ifdef f2c_i2
47 /* for -i2 */
48 typedef short flag;
49 typedef short ftnlen;
50 typedef short ftnint;
51 #else
52 typedef long int flag;
53 typedef long int ftnlen;
54 typedef long int ftnint;
55 #endif
56 
57 /*external read, write*/
58 typedef struct
59 {	flag cierr;
60 	ftnint ciunit;
61 	flag ciend;
62 	char *cifmt;
63 	ftnint cirec;
64 } cilist;
65 
66 /*internal read, write*/
67 typedef struct
68 {	flag icierr;
69 	char *iciunit;
70 	flag iciend;
71 	char *icifmt;
72 	ftnint icirlen;
73 	ftnint icirnum;
74 } icilist;
75 
76 /*open*/
77 typedef struct
78 {	flag oerr;
79 	ftnint ounit;
80 	char *ofnm;
81 	ftnlen ofnmlen;
82 	char *osta;
83 	char *oacc;
84 	char *ofm;
85 	ftnint orl;
86 	char *oblnk;
87 } olist;
88 
89 /*close*/
90 typedef struct
91 {	flag cerr;
92 	ftnint cunit;
93 	char *csta;
94 } cllist;
95 
96 /*rewind, backspace, endfile*/
97 typedef struct
98 {	flag aerr;
99 	ftnint aunit;
100 } alist;
101 
102 /* inquire */
103 typedef struct
104 {	flag inerr;
105 	ftnint inunit;
106 	char *infile;
107 	ftnlen infilen;
108 	ftnint	*inex;	/*parameters in standard's order*/
109 	ftnint	*inopen;
110 	ftnint	*innum;
111 	ftnint	*innamed;
112 	char	*inname;
113 	ftnlen	innamlen;
114 	char	*inacc;
115 	ftnlen	inacclen;
116 	char	*inseq;
117 	ftnlen	inseqlen;
118 	char 	*indir;
119 	ftnlen	indirlen;
120 	char	*infmt;
121 	ftnlen	infmtlen;
122 	char	*inform;
123 	ftnint	informlen;
124 	char	*inunf;
125 	ftnlen	inunflen;
126 	ftnint	*inrecl;
127 	ftnint	*innrec;
128 	char	*inblank;
129 	ftnlen	inblanklen;
130 } inlist;
131 
132 #define VOID void
133 
134 union Multitype {	/* for multiple entry points */
135 	integer1 g;
136 	shortint h;
137 	integer i;
138 	/* longint j; */
139 	real r;
140 	doublereal d;
141 	complex c;
142 	doublecomplex z;
143 	};
144 
145 typedef union Multitype Multitype;
146 
147 /*typedef long int Long;*/	/* No longer used; formerly in Namelist */
148 
149 struct Vardesc {	/* for Namelist */
150 	char *name;
151 	char *addr;
152 	ftnlen *dims;
153 	int  type;
154 	};
155 typedef struct Vardesc Vardesc;
156 
157 struct Namelist {
158 	char *name;
159 	Vardesc **vars;
160 	int nvars;
161 	};
162 typedef struct Namelist Namelist;
163 
164 #define abs(x) ((x) >= 0 ? (x) : -(x))
165 #define dabs(x) (doublereal)abs(x)
166 #define min(a,b) ((a) <= (b) ? (a) : (b))
167 #define max(a,b) ((a) >= (b) ? (a) : (b))
168 #define dmin(a,b) (doublereal)min(a,b)
169 #define dmax(a,b) (doublereal)max(a,b)
170 #define bit_test(a,b)	((a) >> (b) & 1)
171 #define bit_clear(a,b)	((a) & ~((uinteger)1 << (b)))
172 #define bit_set(a,b)	((a) |  ((uinteger)1 << (b)))
173 
174 /* procedure parameter types for -A and -C++ */
175 
176 #define F2C_proc_par_types 1
177 #ifdef __cplusplus
178 typedef int /* Unknown procedure type */ (*U_fp)(...);
179 typedef shortint (*J_fp)(...);
180 typedef integer (*I_fp)(...);
181 typedef real (*R_fp)(...);
182 typedef doublereal (*D_fp)(...), (*E_fp)(...);
183 typedef /* Complex */ VOID (*C_fp)(...);
184 typedef /* Double Complex */ VOID (*Z_fp)(...);
185 typedef logical (*L_fp)(...);
186 typedef shortlogical (*K_fp)(...);
187 typedef /* Character */ VOID (*H_fp)(...);
188 typedef /* Subroutine */ int (*S_fp)(...);
189 #else
190 typedef int /* Unknown procedure type */ (*U_fp)();
191 typedef shortint (*J_fp)();
192 typedef integer (*I_fp)();
193 typedef real (*R_fp)();
194 typedef doublereal (*D_fp)(), (*E_fp)();
195 typedef /* Complex */ VOID (*C_fp)();
196 typedef /* Double Complex */ VOID (*Z_fp)();
197 typedef logical (*L_fp)();
198 typedef shortlogical (*K_fp)();
199 typedef /* Character */ VOID (*H_fp)();
200 typedef /* Subroutine */ int (*S_fp)();
201 #endif
202 /* E_fp is for real functions when -R is not specified */
203 typedef VOID C_f;	/* complex function */
204 typedef VOID H_f;	/* character function */
205 typedef VOID Z_f;	/* double complex function */
206 typedef doublereal E_f;	/* real function with -R not specified */
207 
208 /* undef any lower-case symbols that your C compiler predefines, e.g.: */
209 
210 #ifndef Skip_f2c_Undefs
211 #undef cray
212 #undef gcos
213 #undef mc68010
214 #undef mc68020
215 #undef mips
216 #undef pdp11
217 #undef sgi
218 #undef sparc
219 #undef sun
220 #undef sun2
221 #undef sun3
222 #undef sun4
223 #undef u370
224 #undef u3b
225 #undef u3b2
226 #undef u3b5
227 #undef unix
228 #undef vax
229 #endif
230 
231 #include <math.h>
232 
233 /*
234 Removed to harmonize with system f2c header
235 #undef complex
236 #define complex complexxx
237 */
238 #endif  /* F2C_INCLUDE */
239