#include #include "nr.h" using namespace std; void NR::svdcmp(Mat_IO_DP &a, Vec_O_DP &w, Mat_O_DP &v) { bool flag; int i,its,j,jj,k,l,nm; DP anorm,c,f,g,h,s,scale,x,y,z; int m=a.nrows(); int n=a.ncols(); Vec_DP rv1(n); g=scale=anorm=0.0; for (i=0;i=0;i--) { if (i < n-1) { if (g != 0.0) { for (j=l;j=0;i--) { l=i+1; g=w[i]; for (j=l;j=0;k--) { for (its=0;its<30;its++) { flag=true; for (l=k;l>=0;l--) { nm=l-1; if (fabs(rv1[l])+anorm == anorm) { flag=false; break; } if (fabs(w[nm])+anorm == anorm) break; } if (flag) { c=0.0; s=1.0; for (i=l;i