f2c.h

Go to the documentation of this file.
00001                                                                         
00002 // $Revision: 1.4 $
00003 // $Date: 2003/02/14 23:01:46 $
00004 // $Source: /usr/local/cvs/OpenSees/SRC/matrix/f2c.h,v $
00005                                                                         
00006 /*
00007 // NOTE: this is a modified file of f2c.h to work with most C++ compilers.
00008 //       f2c.h for example, defines abs() as a macro, casuing parsing
00009 //               problems when it encounters abs() in stdlib.h, and so on.
00010 //               It is needed in Lapack++ because some of the C/Lapack functions, like
00011 //               ilaenv_(), need to know what ftn_len is (system dependent.)
00012 //
00013 //               pow_ri() has been removed, since it collides with
00014 //               sunmath.h on SUN4s.
00015 //
00016 //                "typedef float real" has been removed, due to conflict with
00017 //                AT&T CC with real() for complex.
00018 //
00019 //                "typedef ... complex" has been renamed to f2c_complex to
00020 //                avoid conflicts with C++ complex class.
00021 */
00022 
00023 /* f2c.h  --  Standard Fortran to C header file */
00024 
00025 #ifndef F2C_INCLUDE
00026 #define F2C_INCLUDE
00027 
00028 typedef long int integer;
00029 typedef char *address;
00030 typedef short int shortint;
00031 typedef float f2c_real;
00032 typedef double doublereal;
00033 typedef struct { f2c_real r, i; } f2c_complex;
00034 typedef struct { doublereal r, i; } doublecomplex;
00035 typedef long int logical;
00036 typedef short int shortlogical;
00037 
00038 #define TRUE_ (1)
00039 #define FALSE_ (0)
00040 
00041 /* Extern is for use with -E */
00042 #ifndef Extern
00043 #define Extern extern
00044 #endif
00045 
00046 extern int ungetc();    /* This is not declared in Sun's <stdio.h> */
00047 
00048 /* I/O stuff */
00049 
00050 #ifdef f2c_i2
00051 /* for -i2 */
00052 typedef short flag;
00053 typedef short ftnlen;
00054 typedef short ftnint;
00055 #else
00056 typedef long flag;
00057 typedef long ftnlen;
00058 typedef long ftnint;
00059 #endif
00060 
00061 /*external read, write*/
00062 typedef struct
00063 {       flag cierr;
00064         ftnint ciunit;
00065         flag ciend;
00066         char *cifmt;
00067         ftnint cirec;
00068 } cilist;
00069 
00070 /*internal read, write*/
00071 typedef struct
00072 {       flag icierr;
00073         char *iciunit;
00074         flag iciend;
00075         char *icifmt;
00076         ftnint icirlen;
00077         ftnint icirnum;
00078 } icilist;
00079 
00080 /*open*/
00081 typedef struct
00082 {       flag oerr;
00083         ftnint ounit;
00084         char *ofnm;
00085         ftnlen ofnmlen;
00086         char *osta;
00087         char *oacc;
00088         char *ofm;
00089         ftnint orl;
00090         char *oblnk;
00091 } olist;
00092 
00093 /*close*/
00094 typedef struct
00095 {       flag opserr;
00096         ftnint cunit;
00097         char *csta;
00098 } cllist;
00099 
00100 /*rewind, backspace, endfile*/
00101 typedef struct
00102 {       flag aerr;
00103         ftnint aunit;
00104 } alist;
00105 
00106 /* inquire */
00107 typedef struct
00108 {       flag inerr;
00109         ftnint inunit;
00110         char *infile;
00111         ftnlen infilen;
00112         ftnint  *inex;  /*parameters in standard's order*/
00113         ftnint  *inopen;
00114         ftnint  *innum;
00115         ftnint  *innamed;
00116         char    *inname;
00117         ftnlen  innamlen;
00118         char    *inacc;
00119         ftnlen  inacclen;
00120         char    *inseq;
00121         ftnlen  inseqlen;
00122         char    *indir;
00123         ftnlen  indirlen;
00124         char    *infmt;
00125         ftnlen  infmtlen;
00126         char    *inform;
00127         ftnint  informlen;
00128         char    *inunf;
00129         ftnlen  inunflen;
00130         ftnint  *inrecl;
00131         ftnint  *innrec;
00132         char    *inblank;
00133         ftnlen  inblanklen;
00134 } inlist;
00135 
00136 #define VOID void
00137 
00138 union Multitype {       /* for multiple entry points */
00139         shortint h;
00140         integer i;
00141         f2c_real r;
00142         doublereal d;
00143         f2c_complex c;
00144         doublecomplex z;
00145         };
00146 
00147 typedef union Multitype Multitype;
00148 
00149 typedef long Long;      /* No longer used; formerly in Namelist */
00150 
00151 struct Vardesc {        /* for Namelist */
00152         char *name;
00153         char *addr;
00154         ftnlen *dims;
00155         int  type;
00156         };
00157 typedef struct Vardesc Vardesc;
00158 
00159 struct Namelist {
00160         char *name;
00161         Vardesc **vars;
00162         int nvars;
00163         };
00164 typedef struct Namelist Namelist;
00165 
00166 /* #define abs(x) ((x) >= 0 ? (x) : -(x)) */
00167 #define dabs(x) (doublereal)abs(x)
00168 #define min(a,b) ((a) <= (b) ? (a) : (b))
00169 #define max(a,b) ((a) >= (b) ? (a) : (b))
00170 #define dmin(a,b) (doublereal)min(a,b)
00171 #define dmax(a,b) (doublereal)max(a,b)
00172 
00173 /* procedure parameter types for -A and -C++ */
00174 
00175 #define F2C_proc_par_types 1
00176 #ifdef __cplusplus
00177 typedef int /* Unknown procedure type */ (*U_fp)(...);
00178 typedef shortint (*J_fp)(...);
00179 typedef integer (*I_fp)(...);
00180 typedef f2c_real (*R_fp)(...);
00181 typedef doublereal (*D_fp)(...), (*E_fp)(...);
00182 typedef /* Complex */ VOID (*C_fp)(...);
00183 typedef /* Double Complex */ VOID (*Z_fp)(...);
00184 typedef logical (*L_fp)(...);
00185 typedef shortlogical (*K_fp)(...);
00186 typedef /* Character */ VOID (*H_fp)(...);
00187 typedef /* Subroutine */ int (*S_fp)(...);
00188 #else
00189 typedef int /* Unknown procedure type */ (*U_fp)();
00190 typedef shortint (*J_fp)();
00191 typedef integer (*I_fp)();
00192 typedef f2c_real (*R_fp)();
00193 typedef doublereal (*D_fp)(), (*E_fp)();
00194 typedef /* Complex */ VOID (*C_fp)();
00195 typedef /* Double Complex */ VOID (*Z_fp)();
00196 typedef logical (*L_fp)();
00197 typedef shortlogical (*K_fp)();
00198 typedef /* Character */ VOID (*H_fp)();
00199 typedef /* Subroutine */ int (*S_fp)();
00200 #endif
00201 /* E_fp is for real functions when -R is not specified */
00202 typedef VOID C_f;       /* (single precision ) complex function */
00203 typedef VOID H_f;       /* character function */
00204 typedef VOID Z_f;       /* double complex function */
00205 typedef doublereal E_f; /* real function with -R not specified */
00206 
00207 /* undef any lower-case symbols that your C compiler predefines, e.g.: */
00208 
00209 #ifndef Skip_f2c_Undefs
00210 #undef cray
00211 #undef gcos
00212 #undef mc68010
00213 #undef mc68020
00214 #undef mips
00215 #undef pdp11
00216 #undef sgi
00217 #undef sparc
00218 #undef sun
00219 #undef sun2
00220 #undef sun3
00221 #undef sun4
00222 #undef u370
00223 #undef u3b
00224 #undef u3b2
00225 #undef u3b5
00226 #ifndef _KAI
00227 #undef unix
00228 #endif
00229 #undef vax
00230 #endif
00231 #endif
00232 
00233 
00234 /* If you are using a C++ compiler, append the following to f2c.h
00235    for compiling libF77 and libI77. */
00236 
00237 #ifdef __cplusplus
00238 extern "C" {
00239 extern int abort_(void);
00240 extern double c_abs(f2c_complex *);
00241 extern void c_cos(f2c_complex *, f2c_complex *);
00242 extern void c_div(f2c_complex *, f2c_complex *, f2c_complex *);
00243 extern void c_exp(f2c_complex *, f2c_complex *);
00244 extern void c_log(f2c_complex *, f2c_complex *);
00245 extern void c_sin(f2c_complex *, f2c_complex *);
00246 extern void c_sqrt(f2c_complex *, f2c_complex *);
00247 extern double d_abs(double *);
00248 extern double d_acos(double *);
00249 extern double d_asin(double *);
00250 extern double d_atan(double *);
00251 extern double d_atn2(double *, double *);
00252 extern void d_cnjg(doublecomplex *, doublecomplex *);
00253 extern double d_cos(double *);
00254 extern double d_cosh(double *);
00255 extern double d_dim(double *, double *);
00256 extern double d_exp(double *);
00257 extern double d_imag(doublecomplex *);
00258 extern double d_int(double *);
00259 extern double d_lg10(double *);
00260 extern double d_log(double *);
00261 extern double d_mod(double *, double *);
00262 extern double d_nint(double *);
00263 extern double d_prod(float *, float *);
00264 extern double d_sign(double *, double *);
00265 extern double d_sin(double *);
00266 extern double d_sinh(double *);
00267 extern double d_sqrt(double *);
00268 extern double d_tan(double *);
00269 extern double d_tanh(double *);
00270 extern double derf_(double *);
00271 extern double derfc_(double *);
00272 extern integer do_fio(ftnint *, char *, ftnlen);
00273 extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
00274 extern integer do_uio(ftnint *, char *, ftnlen);
00275 extern integer e_rdfe(void);
00276 extern integer e_rdue(void);
00277 extern integer e_rsfe(void);
00278 extern integer e_rsfi(void);
00279 extern integer e_rsle(void);
00280 extern integer e_rsli(void);
00281 extern integer e_rsue(void);
00282 extern integer e_wdfe(void);
00283 extern integer e_wdue(void);
00284 extern integer e_wsfe(void);
00285 extern integer e_wsfi(void);
00286 extern integer e_wsle(void);
00287 extern integer e_wsli(void);
00288 extern integer e_wsue(void);
00289 extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
00290 extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
00291 #ifndef _KAI
00292 extern double erf(double) throw();
00293 #endif
00294 extern double erf_(float *);
00295 #ifndef _KAI
00296 extern double erfc(double) throw();
00297 #endif
00298 extern double erfc_(float *);
00299 extern integer f_back(alist *);
00300 extern integer f_clos(cllist *);
00301 extern integer f_end(alist *);
00302 extern void f_exit(void);
00303 extern integer f_inqu(inlist *);
00304 extern integer f_open(olist *);
00305 extern integer f_rew(alist *);
00306 extern int flush_(void);
00307 extern void getarg_(integer *, char *, ftnlen);
00308 extern void getenv_(char *, char *, ftnlen, ftnlen);
00309 extern short h_abs(short *);
00310 extern short h_dim(short *, short *);
00311 extern short h_dnnt(double *);
00312 extern short h_indx(char *, char *, ftnlen, ftnlen);
00313 extern short h_len(char *, ftnlen);
00314 extern short h_mod(short *, short *);
00315 extern short h_nint(float *);
00316 extern short h_sign(short *, short *);
00317 extern short hl_ge(char *, char *, ftnlen, ftnlen);
00318 extern short hl_gt(char *, char *, ftnlen, ftnlen);
00319 extern short hl_le(char *, char *, ftnlen, ftnlen);
00320 extern short hl_lt(char *, char *, ftnlen, ftnlen);
00321 extern integer i_abs(integer *);
00322 extern integer i_dim(integer *, integer *);
00323 extern integer i_dnnt(double *);
00324 extern integer i_indx(char *, char *, ftnlen, ftnlen);
00325 extern integer i_len(char *, ftnlen);
00326 extern integer i_mod(integer *, integer *);
00327 extern integer i_nint(float *);
00328 extern integer i_sign(integer *, integer *);
00329 extern integer iargc_(void);
00330 extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
00331 extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
00332 extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
00333 extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
00334 extern void pow_ci(f2c_complex *, f2c_complex *, integer *);
00335 extern double pow_dd(double *, double *);
00336 extern double pow_di(double *, integer *);
00337 extern short pow_hh(short *, shortint *);
00338 extern integer pow_ii(integer *, integer *);
00339 /* extern double pow_ri(float *, integer *); */
00340 extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
00341 extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
00342 extern double r_abs(float *);
00343 extern double r_acos(float *);
00344 extern double r_asin(float *);
00345 extern double r_atan(float *);
00346 extern double r_atn2(float *, float *);
00347 extern void r_cnjg(f2c_complex *, f2c_complex *);
00348 extern double r_cos(float *);
00349 extern double r_cosh(float *);
00350 extern double r_dim(float *, float *);
00351 extern double r_exp(float *);
00352 extern double r_imag(f2c_complex *);
00353 extern double r_int(float *);
00354 extern double r_lg10(float *);
00355 extern double r_log(float *);
00356 extern double r_mod(float *, float *);
00357 extern double r_nint(float *);
00358 extern double r_sign(float *, float *);
00359 extern double r_sin(float *);
00360 extern double r_sinh(float *);
00361 extern double r_sqrt(float *);
00362 extern double r_tan(float *);
00363 extern double r_tanh(float *);
00364 extern void s_cat(char *, char **, integer *, integer *, ftnlen);
00365 extern integer s_cmp(char *, char *, ftnlen, ftnlen);
00366 extern void s_copy(char *, char *, ftnlen, ftnlen);
00367 extern int s_paus(char *, ftnlen);
00368 extern integer s_rdfe(cilist *);
00369 extern integer s_rdue(cilist *);
00370 extern integer s_rnge(char *, integer, char *, integer);
00371 extern integer s_rsfe(cilist *);
00372 extern integer s_rsfi(icilist *);
00373 extern integer s_rsle(cilist *);
00374 extern integer s_rsli(icilist *);
00375 extern integer s_rsne(cilist *);
00376 extern integer s_rsni(icilist *);
00377 extern integer s_rsue(cilist *);
00378 extern int s_stop(char *, ftnlen);
00379 extern integer s_wdfe(cilist *);
00380 extern integer s_wdue(cilist *);
00381 extern integer s_wsfe(cilist *);
00382 extern integer s_wsfi(icilist *);
00383 extern integer s_wsle(cilist *);
00384 extern integer s_wsli(icilist *);
00385 extern integer s_wsne(cilist *);
00386 extern integer s_wsni(icilist *);
00387 extern integer s_wsue(cilist *);
00388 extern void sig_die(char *, int);
00389 extern integer signal_(integer *, void (*)(int));
00390 extern int system_(char *, ftnlen);
00391 extern double z_abs(doublecomplex *);
00392 extern void z_cos(doublecomplex *, doublecomplex *);
00393 extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
00394 extern void z_exp(doublecomplex *, doublecomplex *);
00395 extern void z_log(doublecomplex *, doublecomplex *);
00396 extern void z_sin(doublecomplex *, doublecomplex *);
00397 extern void z_sqrt(doublecomplex *, doublecomplex *);
00398         }
00399 #endif

Generated on Mon Oct 23 15:05:23 2006 for OpenSees by doxygen 1.5.0