#define dot(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2])
#define min(a,b) ((a)<(b) ?(a):(b))
#define max(a,b) ((a)>(b) ?(a):(b))
#define ABS(a) ((a)>0.0 ? (a) : -(a))
#define square(a) ((a)*(a))
typedef float point[3];
typedef float vector[3];
typedef float triple[3];

	double triple_cross(float *a, float *b, float *c);
	void cross(float *a, float *b, float *c);
	void vadd(float *a, float *b, float *c);
	void vsub(float *a, float *b, float *c);
	void vmult(float s, float *b, float *c);
	void vcopy(float *a, float *b);
	void vlinc( float s, float *a, float t, float *b, float *c);
	int unit(float *a, float *b); 
	int invert3(float *mat, float *in);
	void mult(float *mat, float *a, float *b);

#define size2(a) dot((a),(a))
