extern int FIX_FLOAT_MEM_SL(float *f, int s);
extern int FIXCEIL_FLOAT_MEM_SL(float *f, int s);
extern int FLOAT_FIX_MEM(int i, float *f);

//extern void FLOAT_COPY(float *d, float *s);
#define FLOAT_COPY(a,b) { \
	int *i_a=(int *)a, *i_b=(int *)b; \
	*i_a=*i_b; \
}

//extern void FLOAT_ABS(float *d, float *s);
#define FLOAT_ABS(a,b) { \
	int *i_a=(int *)a, *i_b=(int *)b; \
	*i_a=(*i_b)&0x7fffffff; \
}

//extern void FLOAT_NEG(float *d, float *s)
#define FLOAT_NEG(a,b) { \
	int *i_a=(int *)a, *i_b=(int *)b; \
	int v_b; \
	v_b=*i_b; \
	if(v_b!=0) v_b=v_b^0x80000000; \
	*i_a=v_b; \
}

extern void FLOAT_SL(float *d, float *fs, int s);
extern void FLOAT_SQRT(float *d, float *s);
extern void ADD_DOUBLE(double *s, double a, double b);
extern void ADD_FLOAT_MEM(float *s, float *a, float *b); //
extern void SUB_FLOAT_MEM(float *s, float *a, float *b); //
extern void MUL_FLOAT_MEM(float *s, float *a, float *b); //
extern void DIV_FLOAT_MEM(float *s, float *a, float *b); //
extern int CMP_FLOAT_MEM(float *a, float *b);
extern int LMUL(int a, int b, int shift);
extern int FDIV(int a, int b);
extern int FDIVS(int a, int b);
extern void ADotProduct(float *a, float b[3], float c[3]);
extern void AVectorCopy(float a[3], float b[3]); // b = a

extern float DotProduct(float b[3], float c[3]);
