/* SIMPDEFS.H */
/*- 
defines, includes, structures, externals
common to most or all files for simplex fitting

J.A. Rupley, Tucson, Arizona
rupley!local@megaron.arizona.edu
*/

#include <stdio.h>
#include <math.h>
#include <ctype.h>

#define ERROR		-1
#define OK		0
#define TRUE		1
#define FALSE		0

#define MAX(X,Y)	((X) >  (Y) ?  (X) : (Y))
#define MIN(X,Y)	((X) <= (Y) ?  (X) : (Y))
#define ABS(X)		((X) <   0  ? -(X) : (X))

#define NPARM		20	/* limit no. parms in pstruct */
#define NDATVAL		20	/* limit no. indep. variables = NDATVAL - 3 */
#define NDATA		10000	/* limit no. data pts */
#define NVERT		(NPARM + 1)

struct dat {
	double datval[NDATVAL] ;
} ;
struct pstruct {
	double val ;
	double parm[NPARM] ;
}  ;
struct qstruct {
	int parmndx[NPARM] ;
	double q[NPARM] ;
	double yplus[NPARM] ;
	double yminus[NPARM] ;
	double a[NPARM] ;
	double bdiag[NPARM] ;
	double inv_bdiag[NPARM] ;
	double std_dev[NPARM] ;
}  ;

#ifdef XXXXFIT
				/* EXTERNAL DEFINITIONS */
struct dat data[NDATA] ;
struct pstruct p[NVERT] ;
struct pstruct pcent ;
struct pstruct *p_p[NVERT] ;
struct pstruct pmin ;
struct qstruct q ;

double bounds[2][NPARM] ;
double qmat[NPARM][NPARM] ;
double mean_func, rms_func, test, rms_data ;
double yzero, ymin, ypmin, mse ;
double quad_test, exit_test ;
int iter, maxiter, nparm, nvert, ndata, maxquad_skip, prt_cycle, ndatval ;
int nfree ;
char title[BUFSIZ] ;

#else
				/* EXTERNAL DECLARATIONS */
extern struct dat data[NDATA] ;
extern struct pstruct p[NVERT] ;
extern struct pstruct pcent ;
extern struct pstruct *p_p[NVERT] ;
extern struct pstruct pmin ;
extern struct qstruct q ;

extern double bounds[2][NPARM] ;
extern double qmat[NPARM][NPARM] ;
extern double mean_func, rms_func, test, rms_data ;
extern double yzero, ymin, ypmin, mse ;
extern double quad_test, exit_test ;
extern int iter, maxiter, nparm, nvert, ndata, maxquad_skip, 
	prt_cycle, ndatval ;
extern int nfree ;
extern char title[] ;

#endif

