#ifndef __FOLD_VARS__
#define __FOLD_VARS__

/* to use floats instead of doubles in pf_fold() comment next line */
#define LARGE_PF
#ifdef  LARGE_PF
#define FLT_OR_DBL double
#else
#define FLT_OR_DBL float
#endif

extern int  noGU;           /* GU not allowed at all */
extern int  no_closingGU;   /* GU allowed only inside stacks */
extern int  tetra_loop;     /* Fold with specially stable 4-loops */
extern int  energy_set;     /* 0 = BP; 1=any mit GC; 2=any mit AU-parameter */
extern int  dangles;	    /* use dangling end energies (not in part_func!) */
/*@null@*/

extern int oldAliEn;        /* use old alifold energies (with gaps) */
extern int ribo;            /* use ribosum matrices */
extern char *RibosumFile;   /* warning this variable will vanish in the future
			       ribosums will be compiled in instead */
extern char *nonstandards;  /* contains allowed non standard bases */
extern double temperature;   /* rescale parameters to this temperature */
extern int  james_rule;     /* interior loops of size 2 get energy 0.8Kcal and
			       no mismatches, default 1 */
extern int  logML;          /* use logarithmic multiloop energy function */
extern int  cut_point;      /* first position of 2nd strand for co-folding */

typedef struct bond {               /* base pair */
   int i;
   int j;
} bondT;
extern bondT  *base_pair; /* list of base pairs */

extern FLT_OR_DBL *pr;          /* base pairing prob. matrix */
extern int   *iindx;            /* pr[i,j] -> pr[iindx[i]-j] */
extern double pf_scale;         /* scaling factor to avoid float overflows*/
extern int    fold_constrained; /* fold with constraints */
extern int    do_backtrack;     /* calculate pair prob matrix in part_func() */
extern int    noLonelyPairs;    /* avoid helices of length 1 */
extern char backtrack_type;     /* usually 'F'; 'C' require (1,N) to be bonded;
				   'M' seq is part of a multi loop */
char * option_string(void);
#endif
