text: /* f2c.h  --  Standard Fortran to C header file */
  
  /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
  
      - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
  
  #ifndef F2C_INCLUDE
  #define F2C_INCLUDE
  
  #include "igraph_blas_internal.h"
  #include "igraph_lapack_internal.h"
  #include "igraph_arpack_internal.h"
  
  typedef int integer;
  typedef unsigned int uinteger;
  typedef char *address;
  typedef short int shortint;
  typedef float real;
  typedef double doublereal;
  typedef struct {
      real r, i;
  } f2c_complex;
  typedef struct {
      doublereal r, i;
  } doublecomplex;
  typedef int logical;
  typedef short int shortlogical;
  typedef char logical1;
  typedef char integer1;
  #ifdef INTEGER_STAR_8   /* Adjust for integer*8. */
      typedef long longint;       /* system-dependent */
      typedef unsigned long ulongint; /* system-dependent */
      #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
      #define qbit_set(a,b)   ((a) |  ((ulongint)1 << (b)))
  #endif
  
  #define TRUE_ (1)
  #define FALSE_ (0)
  
  /* Extern is for use with -E */
  #ifndef Extern
      #define Extern extern
  #endif
  
  /* I/O stuff */
  
  #ifdef f2c_i2
      /* for -i2 */
      typedef short flag;
      typedef short ftnlen;
      typedef short ftnint;
  #else
      typedef int flag;
      typedef int ftnlen;
      typedef int ftnint;
  #endif
  
  /*external read, write*/
  typedef struct {
      flag cierr;
      ftnint ciunit;
      flag ciend;
      char *cifmt;
      ftnint cirec;
  } cilist;
  
  /*internal read, write*/
  typedef struct {
      flag icierr;
      char *iciunit;
      flag iciend;
      char *icifmt;
      ftnint icirlen;
      ftnint icirnum;
  } icilist;
  
  /*open*/
  typedef struct {
      flag oerr;
      ftnint ounit;
      char *ofnm;
      ftnlen ofnmlen;
      char *osta;
      char *oacc;
      char *ofm;
      ftnint orl;
      char *oblnk;
  } olist;
  
  /*close*/
  typedef struct {
      flag cerr;
      ftnint cunit;
      char *csta;
  } cllist;
  
  /*rewind, backspace, endfile*/
  typedef struct {
      flag aerr;
      ftnint aunit;
  } alist;
  
  /* inquire */
  typedef struct {
      flag inerr;
      ftnint inunit;
      char *infile;
      ftnlen infilen;
      ftnint  *inex;  /*parameters in standard's order*/
      ftnint  *inopen;
      ftnint  *innum;
      ftnint  *innamed;
      char    *inname;
      ftnlen  innamlen;
      char    *inacc;
      ftnlen  inacclen;
      char    *inseq;
      ftnlen  inseqlen;
      char    *indir;
      ftnlen  indirlen;
      char    *infmt;
      ftnlen  infmtlen;
      char    *inform;
      ftnint  informlen;
      char    *inunf;
      ftnlen  inunflen;
      ftnint  *inrecl;
      ftnint  *innrec;
      char    *inblank;
      ftnlen  inblanklen;
  } inlist;
  
  #define VOID void
  
  union Multitype {   /* for multiple entry points */
      integer1 g;
      shortint h;
      integer i;
      /* longint j; */
      real r;
      doublereal d;
      f2c_complex c;
      doublecomplex z;
  };
  
  typedef union Multitype Multitype;
  
  /*typedef long int Long;*/  /* No longer used; formerly in Namelist */
  
  struct Vardesc {    /* for Namelist */
      char *name;
      char *addr;
      ftnlen *dims;
      int  type;
  };
  typedef struct Vardesc Vardesc;
  
  struct Namelist {
      char *name;
      Vardesc **vars;
      int nvars;
  };
  typedef struct Namelist Namelist;
  
  #define abs(x) ((x) >= 0 ? (x) : -(x))
  #define dabs(x) (doublereal)abs(x)
  #define min(a,b) ((a) <= (b) ? (a) : (b))
  #define max(a,b) ((a) >= (b) ? (a) : (b))
  #define dmin(a,b) (doublereal)min(a,b)
  #define dmax(a,b) (doublereal)max(a,b)
  #define bit_test(a,b)   ((a) >> (b) & 1)
  #define bit_clear(a,b)  ((a) & ~((uinteger)1 << (b)))
  #define bit_set(a,b)    ((a) |  ((uinteger)1 << (b)))
  
  /* procedure parameter types for -A and -C++ */
  
  #define F2C_proc_par_types 1
  #ifdef __cplusplus
      typedef int /* Unknown procedure type */ (*U_fp)(...);
      typedef shortint (*J_fp)(...);
      typedef integer (*I_fp)(...);
      typedef real (*R_fp)(...);
      typedef doublereal (*D_fp)(...), (*E_fp)(...);
      typedef /* Complex */ VOID (*C_fp)(...);
      typedef /* Double Complex */ VOID (*Z_fp)(...);
      typedef logical (*L_fp)(...);
      typedef shortlogical (*K_fp)(...);
      typedef /* Character */ VOID (*H_fp)(...);
      typedef /* Subroutine */ int (*S_fp)(...);
  #else
      typedef int /* Unknown procedure type */ (*U_fp)();
      typedef shortint (*J_fp)();
      typedef integer (*I_fp)();
      typedef real (*R_fp)();
      typedef doublereal (*D_fp)(), (*E_fp)();
      typedef /* Complex */ VOID (*C_fp)();
      typedef /* Double Complex */ VOID (*Z_fp)();
      typedef logical (*L_fp)();
      typedef shortlogical (*K_fp)();
      typedef /* Character */ VOID (*H_fp)();
      typedef /* Subroutine */ int (*S_fp)();
  #endif
  /* E_fp is for real functions when -R is not specified */
  typedef VOID C_f;   /* complex function */
  typedef VOID H_f;   /* character function */
  typedef VOID Z_f;   /* double complex function */
  typedef doublereal E_f; /* real function with -R not specified */
  
  /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  
  #ifndef Skip_f2c_Undefs
      #undef cray
      #undef gcos
      #undef mc68010
      #undef mc68020
      #undef mips
      #undef pdp11
      #undef sgi
      #undef sparc
      #undef sun
      #undef sun2
      #undef sun3
      #undef sun4
      #undef u370
      #undef u3b
      #undef u3b2
      #undef u3b5
      #undef unix
      #undef vax
  #endif
  
  #include "config.h"
  
  #endif
  