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