/* ruinv.c CCMATH mathematics library source code.
*
* Copyright (C) 2000 Daniel A. Atkinson All rights reserved.
* This code may be redistributed under the terms of the GNU library
* public license (LGPL). ( See the lgpl.license file for details.)
* ------------------------------------------------------------------------
*/
int ruinv(double *a,int n)
{ int j; double fabs();
double tt,z,*p,*q,*r,*s,*t;
for(j=0,tt=0.,p=a; j<n ;++j,p+=n+1) if((z=fabs(*p))>tt) tt=z;
tt*=1.e-16;
for(j=0,p=a; j<n ;++j,p+=n+1){
if(fabs(*p)<tt) return -1;
*p=1./ *p;
for(q=a+j,t=a; q<p ;t+=n+1,q+=n){
for(s=q,r=t,z=0.; s<p ;s+=n) z-= *s * *r++;
*q=z* *p;
}
}
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1