www.pudn.com > 医学算法.rar > matrix.c
/*
inv - calculate inverse of 3x3 matrix
*/
inv_(a,b)
float *a,*b;
{
inv(a,b);
}
inv(a,b)
float *a;
float *b;
{
float det;
register i;
b[0] = (a[4]*a[8] - a[5]*a[7]);
b[3] = -(a[3]*a[8] - a[5]*a[6]);
b[6] = (a[3]*a[7] - a[4]*a[6]);
b[1] = -(a[1]*a[8] - a[2]*a[7]);
b[4] = (a[0]*a[8] - a[2]*a[6]);
b[7] = -(a[0]*a[7] - a[1]*a[6]);
b[2] = (a[1]*a[5] - a[2]*a[4]);
b[5] = -(a[0]*a[5] - a[2]*a[3]);
b[8] = (a[0]*a[4] - a[1]*a[3]);
det = a[0]*b[0] + a[1]*b[3] + a[2]*b[6];
for(i=0;i<9;b[i++] =/ det);
}
/*
mult - multiply two matrices
c = a b
a: NxM b: MxL c:NxL
*/
mult_(a,b,c,n,m,l)
float *a,*b,*c;
long int *n,*m,*l;
{
mult(a,b,c,(int)*n,(int)*m,(int)*l);
}
mult(a,b,c,n,m,l)
float *a;
float *b;
float *c;
int n;
int m;
int l;
{
register j,k;
float *ap,*bp;
int i;
for(i=0;i