// $CVSHeader: pal8e/inc/nick_e.h,v 1.4 2005/02/15 02:43:50 indraneel Rel $

/* include this to access extern functions in nick.c */
#ifndef _NICK_E_H
#define _NICK_E_H

#define NUMBER 6000
struct point
{
	double   xcoord;
	double   ycoord;
	double   zcoord;
};
typedef struct point point;

struct _vector
{
	point initPoint;
	point endPoint;
};
typedef struct _vector VECTOR;

void rotFit(double *data,int npoints, int dim,VECTOR* retData);

/* result structure for eigen() space allocated for mc and axis
   needs to be freed by calling function. */
struct result_e {
/* mass center coordinates for each dimension and rmsd */
  double  *mc;
/* coordinate of each axis, rmsd, sqrt(eigenvalue) */
  double *axis;
};
  
/* call this function. data is the array of coordinates.
arranged as every dimension for every point. eg:
x1, y1, z1... x2, y2, z2... xn, yn, zn
datapoints is the number of total points to use
dimension specifies dimension of data.
results are stored in the struct defined above. */ 
int eigen (double *data, int datapoints, int dim, struct result_e *result );

double* generatedIdealHelix(int npoints);
double **bestRT(double **a, double **b, int n );

#endif /* _NICK_E_H */
