00001
00002
00007 #ifndef F2C_INCLUDE
00008 #define F2C_INCLUDE
00009
00010 typedef long int integer;
00011 typedef unsigned long int uinteger;
00012 typedef char *address;
00013 typedef short int shortint;
00014 typedef float real;
00015 typedef double doublereal;
00016 typedef struct { real r, i; } complex;
00017 typedef struct { doublereal r, i; } doublecomplex;
00018 typedef long int logical;
00019 typedef short int shortlogical;
00020 typedef char logical1;
00021 typedef char integer1;
00022 #ifdef INTEGER_STAR_8
00023 typedef long long longint;
00024 typedef unsigned long long ulongint;
00025 #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
00026 #define qbit_set(a,b) ((a) | ((ulongint)1 << (b)))
00027 #endif
00028
00029 #define TRUE_ (1)
00030 #define FALSE_ (0)
00031
00032
00033 #ifndef Extern
00034 #define Extern extern
00035 #endif
00036
00037
00038
00039 #ifdef f2c_i2
00040
00041 typedef short flag;
00042 typedef short ftnlen;
00043 typedef short ftnint;
00044 #else
00045 typedef long int flag;
00046 typedef long int ftnlen;
00047 typedef long int ftnint;
00048 #endif
00049
00050
00051 typedef struct
00052 { flag cierr;
00053 ftnint ciunit;
00054 flag ciend;
00055 char *cifmt;
00056 ftnint cirec;
00057 } cilist;
00058
00059
00060 typedef struct
00061 { flag icierr;
00062 char *iciunit;
00063 flag iciend;
00064 char *icifmt;
00065 ftnint icirlen;
00066 ftnint icirnum;
00067 } icilist;
00068
00069
00070 typedef struct
00071 { flag oerr;
00072 ftnint ounit;
00073 char *ofnm;
00074 ftnlen ofnmlen;
00075 char *osta;
00076 char *oacc;
00077 char *ofm;
00078 ftnint orl;
00079 char *oblnk;
00080 } olist;
00081
00082
00083 typedef struct
00084 { flag cerr;
00085 ftnint cunit;
00086 char *csta;
00087 } cllist;
00088
00089
00090 typedef struct
00091 { flag aerr;
00092 ftnint aunit;
00093 } alist;
00094
00095
00096 typedef struct
00097 { flag inerr;
00098 ftnint inunit;
00099 char *infile;
00100 ftnlen infilen;
00101 ftnint *inex;
00102 ftnint *inopen;
00103 ftnint *innum;
00104 ftnint *innamed;
00105 char *inname;
00106 ftnlen innamlen;
00107 char *inacc;
00108 ftnlen inacclen;
00109 char *inseq;
00110 ftnlen inseqlen;
00111 char *indir;
00112 ftnlen indirlen;
00113 char *infmt;
00114 ftnlen infmtlen;
00115 char *inform;
00116 ftnint informlen;
00117 char *inunf;
00118 ftnlen inunflen;
00119 ftnint *inrecl;
00120 ftnint *innrec;
00121 char *inblank;
00122 ftnlen inblanklen;
00123 } inlist;
00124
00125 #define VOID void
00126
00127 union Multitype {
00128 integer1 g;
00129 shortint h;
00130 integer i;
00131
00132 real r;
00133 doublereal d;
00134 complex c;
00135 doublecomplex z;
00136 };
00137
00138 typedef union Multitype Multitype;
00139
00140
00141
00142 struct Vardesc {
00143 char *name;
00144 char *addr;
00145 ftnlen *dims;
00146 int type;
00147 };
00148 typedef struct Vardesc Vardesc;
00149
00150 struct Namelist {
00151 char *name;
00152 Vardesc **vars;
00153 int nvars;
00154 };
00155 typedef struct Namelist Namelist;
00156
00157 #define abs(x) ((x) >= 0 ? (x) : -(x))
00158 #define dabs(x) (doublereal)abs(x)
00159 #define min(a,b) ((a) <= (b) ? (a) : (b))
00160 #define max(a,b) ((a) >= (b) ? (a) : (b))
00161 #define dmin(a,b) (doublereal)min(a,b)
00162 #define dmax(a,b) (doublereal)max(a,b)
00163 #define bit_test(a,b) ((a) >> (b) & 1)
00164 #define bit_clear(a,b) ((a) & ~((uinteger)1 << (b)))
00165 #define bit_set(a,b) ((a) | ((uinteger)1 << (b)))
00166
00167
00168
00169 #define F2C_proc_par_types 1
00170 #ifdef __cplusplus
00171 typedef int (*U_fp)(...);
00172 typedef shortint (*J_fp)(...);
00173 typedef integer (*I_fp)(...);
00174 typedef real (*R_fp)(...);
00175 typedef doublereal (*D_fp)(...), (*E_fp)(...);
00176 typedef VOID (*C_fp)(...);
00177 typedef VOID (*Z_fp)(...);
00178 typedef logical (*L_fp)(...);
00179 typedef shortlogical (*K_fp)(...);
00180 typedef VOID (*H_fp)(...);
00181 typedef int (*S_fp)(...);
00182 #else
00183 typedef int (*U_fp)();
00184 typedef shortint (*J_fp)();
00185 typedef integer (*I_fp)();
00186 typedef real (*R_fp)();
00187 typedef doublereal (*D_fp)(), (*E_fp)();
00188 typedef VOID (*C_fp)();
00189 typedef VOID (*Z_fp)();
00190 typedef logical (*L_fp)();
00191 typedef shortlogical (*K_fp)();
00192 typedef VOID (*H_fp)();
00193 typedef int (*S_fp)();
00194 #endif
00195
00196 typedef VOID C_f;
00197 typedef VOID H_f;
00198 typedef VOID Z_f;
00199 typedef doublereal E_f;
00200
00201
00202
00203 #ifndef Skip_f2c_Undefs
00204 #undef cray
00205 #undef gcos
00206 #undef mc68010
00207 #undef mc68020
00208 #undef mips
00209 #undef pdp11
00210 #undef sgi
00211 #undef sparc
00212 #undef sun
00213 #undef sun2
00214 #undef sun3
00215 #undef sun4
00216 #undef u370
00217 #undef u3b
00218 #undef u3b2
00219 #undef u3b5
00220 #undef unix
00221 #undef vax
00222 #endif
00223 #endif
00224
00225
00226
00227 #ifdef __cplusplus
00228 extern "C" {
00229 extern int abort_(void);
00230 extern double c_abs(complex *);
00231 extern void c_cos(complex *, complex *);
00232 extern void c_div(complex *, complex *, complex *);
00233 extern void c_exp(complex *, complex *);
00234 extern void c_log(complex *, complex *);
00235 extern void c_sin(complex *, complex *);
00236 extern void c_sqrt(complex *, complex *);
00237 extern double d_abs(double *);
00238 extern double d_acos(double *);
00239 extern double d_asin(double *);
00240 extern double d_atan(double *);
00241 extern double d_atn2(double *, double *);
00242 extern void d_cnjg(doublecomplex *, doublecomplex *);
00243 extern double d_cos(double *);
00244 extern double d_cosh(double *);
00245 extern double d_dim(double *, double *);
00246 extern double d_exp(double *);
00247 extern double d_imag(doublecomplex *);
00248 extern double d_int(double *);
00249 extern double d_lg10(double *);
00250 extern double d_log(double *);
00251 extern double d_mod(double *, double *);
00252 extern double d_nint(double *);
00253 extern double d_prod(float *, float *);
00254 extern double d_sign(double *, double *);
00255 extern double d_sin(double *);
00256 extern double d_sinh(double *);
00257 extern double d_sqrt(double *);
00258 extern double d_tan(double *);
00259 extern double d_tanh(double *);
00260 extern double derf_(double *);
00261 extern double derfc_(double *);
00262 extern integer do_fio(ftnint *, char *, ftnlen);
00263 extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
00264 extern integer do_uio(ftnint *, char *, ftnlen);
00265 extern integer e_rdfe(void);
00266 extern integer e_rdue(void);
00267 extern integer e_rsfe(void);
00268 extern integer e_rsfi(void);
00269 extern integer e_rsle(void);
00270 extern integer e_rsli(void);
00271 extern integer e_rsue(void);
00272 extern integer e_wdfe(void);
00273 extern integer e_wdue(void);
00274 extern integer e_wsfe(void);
00275 extern integer e_wsfi(void);
00276 extern integer e_wsle(void);
00277 extern integer e_wsli(void);
00278 extern integer e_wsue(void);
00279 extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
00280 extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
00281
00282
00283
00284
00285 extern integer f_back(alist *);
00286 extern integer f_clos(cllist *);
00287 extern integer f_end(alist *);
00288 extern void f_exit(void);
00289 extern integer f_inqu(inlist *);
00290 extern integer f_open(olist *);
00291 extern integer f_rew(alist *);
00292 extern int flush_(void);
00293 extern void getarg_(integer *, char *, ftnlen);
00294 extern void getenv_(char *, char *, ftnlen, ftnlen);
00295 extern short h_abs(short *);
00296 extern short h_dim(short *, short *);
00297 extern short h_dnnt(double *);
00298 extern short h_indx(char *, char *, ftnlen, ftnlen);
00299 extern short h_len(char *, ftnlen);
00300 extern short h_mod(short *, short *);
00301 extern short h_nint(float *);
00302 extern short h_sign(short *, short *);
00303 extern short hl_ge(char *, char *, ftnlen, ftnlen);
00304 extern short hl_gt(char *, char *, ftnlen, ftnlen);
00305 extern short hl_le(char *, char *, ftnlen, ftnlen);
00306 extern short hl_lt(char *, char *, ftnlen, ftnlen);
00307 extern integer i_abs(integer *);
00308 extern integer i_dim(integer *, integer *);
00309 extern integer i_dnnt(double *);
00310 extern integer i_indx(char *, char *, ftnlen, ftnlen);
00311 extern integer i_len(char *, ftnlen);
00312 extern integer i_mod(integer *, integer *);
00313 extern integer i_nint(float *);
00314 extern integer i_sign(integer *, integer *);
00315 extern integer iargc_(void);
00316 extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
00317 extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
00318 extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
00319 extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
00320 extern void pow_ci(complex *, complex *, integer *);
00321 extern double pow_dd(double *, double *);
00322 extern double pow_di(double *, integer *);
00323 extern short pow_hh(short *, shortint *);
00324 extern integer pow_ii(integer i, integer j);
00325 extern double pow_ri(float *, integer *);
00326 extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
00327 extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
00328 extern double r_abs(float *);
00329 extern double r_acos(float *);
00330 extern double r_asin(float *);
00331 extern double r_atan(float *);
00332 extern double r_atn2(float *, float *);
00333 extern void r_cnjg(complex *, complex *);
00334 extern double r_cos(float *);
00335 extern double r_cosh(float *);
00336 extern double r_dim(float *, float *);
00337 extern double r_exp(float *);
00338 extern double r_imag(complex *);
00339 extern double r_int(float *);
00340 extern double r_lg10(float *);
00341 extern double r_log(float *);
00342 extern double r_mod(float *, float *);
00343 extern double r_nint(float *);
00344 extern double r_sign(float *, float *);
00345 extern double r_sin(float *);
00346 extern double r_sinh(float *);
00347 extern double r_sqrt(float *);
00348 extern double r_tan(float *);
00349 extern double r_tanh(float *);
00350 extern void s_cat(char *, char **, integer *, integer *, ftnlen);
00351 extern integer s_cmp(char *, char *, ftnlen, ftnlen);
00352 extern void s_copy(char *, char *, ftnlen, ftnlen);
00353 extern int s_paus(char *, ftnlen);
00354 extern integer s_rdfe(cilist *);
00355 extern integer s_rdue(cilist *);
00356 extern integer s_rnge(char *, integer, char *, integer);
00357 extern integer s_rsfe(cilist *);
00358 extern integer s_rsfi(icilist *);
00359 extern integer s_rsle(cilist *);
00360 extern integer s_rsli(icilist *);
00361 extern integer s_rsne(cilist *);
00362 extern integer s_rsni(icilist *);
00363 extern integer s_rsue(cilist *);
00364 extern int s_stop(char *, ftnlen);
00365 extern integer s_wdfe(cilist *);
00366 extern integer s_wdue(cilist *);
00367 extern integer s_wsfe(cilist *);
00368 extern integer s_wsfi(icilist *);
00369 extern integer s_wsle(cilist *);
00370 extern integer s_wsli(icilist *);
00371 extern integer s_wsne(cilist *);
00372 extern integer s_wsni(icilist *);
00373 extern integer s_wsue(cilist *);
00374 extern void sig_die(char *, int);
00375 extern integer signal_(integer *, void (*)(int));
00376 extern integer system_(char *, ftnlen);
00377 extern double z_abs(doublecomplex *);
00378 extern void z_cos(doublecomplex *, doublecomplex *);
00379 extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
00380 extern void z_exp(doublecomplex *, doublecomplex *);
00381 extern void z_log(doublecomplex *, doublecomplex *);
00382 extern void z_sin(doublecomplex *, doublecomplex *);
00383 extern void z_sqrt(doublecomplex *, doublecomplex *);
00384 }
00385 #endif