/* least-squares inversion */ #include #include #include "../iolib/message.h" void leastinv(dim,ata,atb,cov,xi,step_damp,flag) int dim; float **ata; /*upper triangle filled up*/ float *atb; float **cov; /*inverse model covariance matrix, upper triangule*/ float *xi; /* model from previous iteration minus a priori model*/ float step_damp; int flag; /* 0 --> no inverse ata is calculated */ { float rms,trace; double add; int i,j,k; void invmat(); rms=0.0; for(i=0;ik) k=j; } trace=1.0; if(k>0) for(i=0;ik;i--) trace*=0.1; for(i=0;i