You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

f2c.h 5.0 kB

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