home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fs.zip / octave / f2c / libi77 / f2c.h < prev    next >
C/C++ Source or Header  |  2000-01-15  |  10KB  |  377 lines

  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. typedef long int integer;
  11. typedef char *address;
  12. typedef short int shortint;
  13. typedef float real;
  14. typedef double doublereal;
  15. typedef struct { real r, i; } complex;
  16. typedef struct { doublereal r, i; } doublecomplex;
  17. typedef long int logical;
  18. typedef short int shortlogical;
  19. typedef char logical1;
  20. typedef char integer1;
  21. /* typedef long long longint; */ /* system-dependent */
  22.  
  23. #define TRUE_ (1)
  24. #define FALSE_ (0)
  25.  
  26. /* Extern is for use with -E */
  27. #ifndef Extern
  28. #define Extern extern
  29. #endif
  30.  
  31. /* I/O stuff */
  32.  
  33. #ifdef f2c_i2
  34. /* for -i2 */
  35. typedef short flag;
  36. typedef short ftnlen;
  37. typedef short ftnint;
  38. #else
  39. typedef long flag;
  40. typedef long ftnlen;
  41. typedef long ftnint;
  42. #endif
  43.  
  44. /*external read, write*/
  45. typedef struct
  46. {    flag cierr;
  47.     ftnint ciunit;
  48.     flag ciend;
  49.     char *cifmt;
  50.     ftnint cirec;
  51. } cilist;
  52.  
  53. /*internal read, write*/
  54. typedef struct
  55. {    flag icierr;
  56.     char *iciunit;
  57.     flag iciend;
  58.     char *icifmt;
  59.     ftnint icirlen;
  60.     ftnint icirnum;
  61. } icilist;
  62.  
  63. /*open*/
  64. typedef struct
  65. {    flag oerr;
  66.     ftnint ounit;
  67.     char *ofnm;
  68.     ftnlen ofnmlen;
  69.     char *osta;
  70.     char *oacc;
  71.     char *ofm;
  72.     ftnint orl;
  73.     char *oblnk;
  74. } olist;
  75.  
  76. /*close*/
  77. typedef struct
  78. {    flag cerr;
  79.     ftnint cunit;
  80.     char *csta;
  81. } cllist;
  82.  
  83. /*rewind, backspace, endfile*/
  84. typedef struct
  85. {    flag aerr;
  86.     ftnint aunit;
  87. } alist;
  88.  
  89. /* inquire */
  90. typedef struct
  91. {    flag inerr;
  92.     ftnint inunit;
  93.     char *infile;
  94.     ftnlen infilen;
  95.     ftnint    *inex;    /*parameters in standard's order*/
  96.     ftnint    *inopen;
  97.     ftnint    *innum;
  98.     ftnint    *innamed;
  99.     char    *inname;
  100.     ftnlen    innamlen;
  101.     char    *inacc;
  102.     ftnlen    inacclen;
  103.     char    *inseq;
  104.     ftnlen    inseqlen;
  105.     char     *indir;
  106.     ftnlen    indirlen;
  107.     char    *infmt;
  108.     ftnlen    infmtlen;
  109.     char    *inform;
  110.     ftnint    informlen;
  111.     char    *inunf;
  112.     ftnlen    inunflen;
  113.     ftnint    *inrecl;
  114.     ftnint    *innrec;
  115.     char    *inblank;
  116.     ftnlen    inblanklen;
  117. } inlist;
  118.  
  119. #define VOID void
  120.  
  121. union Multitype {    /* for multiple entry points */
  122.     integer1 g;
  123.     shortint h;
  124.     integer i;
  125.     /* longint j; */
  126.     real r;
  127.     doublereal d;
  128.     complex c;
  129.     doublecomplex z;
  130.     };
  131.  
  132. typedef union Multitype Multitype;
  133.  
  134. typedef long Long;    /* No longer used; formerly in Namelist */
  135.  
  136. struct Vardesc {    /* for Namelist */
  137.     char *name;
  138.     char *addr;
  139.     ftnlen *dims;
  140.     int  type;
  141.     };
  142. typedef struct Vardesc Vardesc;
  143.  
  144. struct Namelist {
  145.     char *name;
  146.     Vardesc **vars;
  147.     int nvars;
  148.     };
  149. typedef struct Namelist Namelist;
  150.  
  151. #define abs(x) ((x) >= 0 ? (x) : -(x))
  152. #define dabs(x) (doublereal)abs(x)
  153. #define min(a,b) ((a) <= (b) ? (a) : (b))
  154. #define max(a,b) ((a) >= (b) ? (a) : (b))
  155. #define dmin(a,b) (doublereal)min(a,b)
  156. #define dmax(a,b) (doublereal)max(a,b)
  157.  
  158. /* procedure parameter types for -A and -C++ */
  159.  
  160. #define F2C_proc_par_types 1
  161. #ifdef __cplusplus
  162. typedef int /* Unknown procedure type */ (*U_fp)(...);
  163. typedef shortint (*J_fp)(...);
  164. typedef integer (*I_fp)(...);
  165. typedef real (*R_fp)(...);
  166. typedef doublereal (*D_fp)(...), (*E_fp)(...);
  167. typedef /* Complex */ VOID (*C_fp)(...);
  168. typedef /* Double Complex */ VOID (*Z_fp)(...);
  169. typedef logical (*L_fp)(...);
  170. typedef shortlogical (*K_fp)(...);
  171. typedef /* Character */ VOID (*H_fp)(...);
  172. typedef /* Subroutine */ int (*S_fp)(...);
  173. #else
  174. typedef int /* Unknown procedure type */ (*U_fp)();
  175. typedef shortint (*J_fp)();
  176. typedef integer (*I_fp)();
  177. typedef real (*R_fp)();
  178. typedef doublereal (*D_fp)(), (*E_fp)();
  179. typedef /* Complex */ VOID (*C_fp)();
  180. typedef /* Double Complex */ VOID (*Z_fp)();
  181. typedef logical (*L_fp)();
  182. typedef shortlogical (*K_fp)();
  183. typedef /* Character */ VOID (*H_fp)();
  184. typedef /* Subroutine */ int (*S_fp)();
  185. #endif
  186. /* E_fp is for real functions when -R is not specified */
  187. typedef VOID C_f;    /* complex function */
  188. typedef VOID H_f;    /* character function */
  189. typedef VOID Z_f;    /* double complex function */
  190. typedef doublereal E_f;    /* real function with -R not specified */
  191.  
  192. /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  193.  
  194. #ifndef Skip_f2c_Undefs
  195. #undef cray
  196. #undef gcos
  197. #undef mc68010
  198. #undef mc68020
  199. #undef mips
  200. #undef pdp11
  201. #undef sgi
  202. #undef sparc
  203. #undef sun
  204. #undef sun2
  205. #undef sun3
  206. #undef sun4
  207. #undef u370
  208. #undef u3b
  209. #undef u3b2
  210. #undef u3b5
  211. #undef unix
  212. #undef vax
  213. #endif
  214. #endif
  215. /* If you are using a C++ compiler, append the following to f2c.h
  216.    for compiling libF77 and libI77. */
  217.  
  218. #ifdef __cplusplus
  219. extern "C" {
  220. extern int abort_(void);
  221. extern double c_abs(complex *);
  222. extern void c_cos(complex *, complex *);
  223. extern void c_div(complex *, complex *, complex *);
  224. extern void c_exp(complex *, complex *);
  225. extern void c_log(complex *, complex *);
  226. extern void c_sin(complex *, complex *);
  227. extern void c_sqrt(complex *, complex *);
  228. extern double d_abs(double *);
  229. extern double d_acos(double *);
  230. extern double d_asin(double *);
  231. extern double d_atan(double *);
  232. extern double d_atn2(double *, double *);
  233. extern void d_cnjg(doublecomplex *, doublecomplex *);
  234. extern double d_cos(double *);
  235. extern double d_cosh(double *);
  236. extern double d_dim(double *, double *);
  237. extern double d_exp(double *);
  238. extern double d_imag(doublecomplex *);
  239. extern double d_int(double *);
  240. extern double d_lg10(double *);
  241. extern double d_log(double *);
  242. extern double d_mod(double *, double *);
  243. extern double d_nint(double *);
  244. extern double d_prod(float *, float *);
  245. extern double d_sign(double *, double *);
  246. extern double d_sin(double *);
  247. extern double d_sinh(double *);
  248. extern double d_sqrt(double *);
  249. extern double d_tan(double *);
  250. extern double d_tanh(double *);
  251. extern double derf_(double *);
  252. extern double derfc_(double *);
  253. extern integer do_fio(ftnint *, char *, ftnlen);
  254. extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
  255. extern integer do_uio(ftnint *, char *, ftnlen);
  256. extern integer e_rdfe(void);
  257. extern integer e_rdue(void);
  258. extern integer e_rsfe(void);
  259. extern integer e_rsfi(void);
  260. extern integer e_rsle(void);
  261. extern integer e_rsli(void);
  262. extern integer e_rsue(void);
  263. extern integer e_wdfe(void);
  264. extern integer e_wdue(void);
  265. extern integer e_wsfe(void);
  266. extern integer e_wsfi(void);
  267. extern integer e_wsle(void);
  268. extern integer e_wsli(void);
  269. extern integer e_wsue(void);
  270. extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
  271. extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
  272. extern double erf(double);
  273. extern double erf_(float *);
  274. extern double erfc(double);
  275. extern double erfc_(float *);
  276. extern integer f_back(alist *);
  277. extern integer f_clos(cllist *);
  278. extern integer f_end(alist *);
  279. extern void f_exit(void);
  280. extern integer f_inqu(inlist *);
  281. extern integer f_open(olist *);
  282. extern integer f_rew(alist *);
  283. extern int flush_(void);
  284. extern void getarg_(integer *, char *, ftnlen);
  285. extern void getenv_(char *, char *, ftnlen, ftnlen);
  286. extern short h_abs(short *);
  287. extern short h_dim(short *, short *);
  288. extern short h_dnnt(double *);
  289. extern short h_indx(char *, char *, ftnlen, ftnlen);
  290. extern short h_len(char *, ftnlen);
  291. extern short h_mod(short *, short *);
  292. extern short h_nint(float *);
  293. extern short h_sign(short *, short *);
  294. extern short hl_ge(char *, char *, ftnlen, ftnlen);
  295. extern short hl_gt(char *, char *, ftnlen, ftnlen);
  296. extern short hl_le(char *, char *, ftnlen, ftnlen);
  297. extern short hl_lt(char *, char *, ftnlen, ftnlen);
  298. extern integer i_abs(integer *);
  299. extern integer i_dim(integer *, integer *);
  300. extern integer i_dnnt(double *);
  301. extern integer i_indx(char *, char *, ftnlen, ftnlen);
  302. extern integer i_len(char *, ftnlen);
  303. extern integer i_mod(integer *, integer *);
  304. extern integer i_nint(float *);
  305. extern integer i_sign(integer *, integer *);
  306. extern integer iargc_(void);
  307. extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
  308. extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
  309. extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
  310. extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
  311. extern void pow_ci(complex *, complex *, integer *);
  312. extern double pow_dd(double *, double *);
  313. extern double pow_di(double *, integer *);
  314. extern short pow_hh(short *, shortint *);
  315. extern integer pow_ii(integer *, integer *);
  316. extern double pow_ri(float *, integer *);
  317. extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
  318. extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
  319. extern double r_abs(float *);
  320. extern double r_acos(float *);
  321. extern double r_asin(float *);
  322. extern double r_atan(float *);
  323. extern double r_atn2(float *, float *);
  324. extern void r_cnjg(complex *, complex *);
  325. extern double r_cos(float *);
  326. extern double r_cosh(float *);
  327. extern double r_dim(float *, float *);
  328. extern double r_exp(float *);
  329. extern double r_imag(complex *);
  330. extern double r_int(float *);
  331. extern double r_lg10(float *);
  332. extern double r_log(float *);
  333. extern double r_mod(float *, float *);
  334. extern double r_nint(float *);
  335. extern double r_sign(float *, float *);
  336. extern double r_sin(float *);
  337. extern double r_sinh(float *);
  338. extern double r_sqrt(float *);
  339. extern double r_tan(float *);
  340. extern double r_tanh(float *);
  341. extern void s_cat(char *, char **, integer *, integer *, ftnlen);
  342. extern integer s_cmp(char *, char *, ftnlen, ftnlen);
  343. extern void s_copy(char *, char *, ftnlen, ftnlen);
  344. extern int s_paus(char *, ftnlen);
  345. extern integer s_rdfe(cilist *);
  346. extern integer s_rdue(cilist *);
  347. extern integer s_rnge(char *, integer, char *, integer);
  348. extern integer s_rsfe(cilist *);
  349. extern integer s_rsfi(icilist *);
  350. extern integer s_rsle(cilist *);
  351. extern integer s_rsli(icilist *);
  352. extern integer s_rsne(cilist *);
  353. extern integer s_rsni(icilist *);
  354. extern integer s_rsue(cilist *);
  355. extern int s_stop(char *, ftnlen);
  356. extern integer s_wdfe(cilist *);
  357. extern integer s_wdue(cilist *);
  358. extern integer s_wsfe(cilist *);
  359. extern integer s_wsfi(icilist *);
  360. extern integer s_wsle(cilist *);
  361. extern integer s_wsli(icilist *);
  362. extern integer s_wsne(cilist *);
  363. extern integer s_wsni(icilist *);
  364. extern integer s_wsue(cilist *);
  365. extern void sig_die(char *, int);
  366. extern integer signal_(integer *, void (*)(int));
  367. extern int system_(char *, ftnlen);
  368. extern double z_abs(doublecomplex *);
  369. extern void z_cos(doublecomplex *, doublecomplex *);
  370. extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
  371. extern void z_exp(doublecomplex *, doublecomplex *);
  372. extern void z_log(doublecomplex *, doublecomplex *);
  373. extern void z_sin(doublecomplex *, doublecomplex *);
  374. extern void z_sqrt(doublecomplex *, doublecomplex *);
  375.     }
  376. #endif
  377.