#include #include "nr.h" using namespace std; void NR::tqli(Vec_IO_DP &d, Vec_IO_DP &e, Mat_IO_DP &z) { int m,l,iter,i,k; DP s,r,p,g,f,dd,c,b; int n=d.size(); for (i=1;i=l;i--) { f=s*e[i]; b=c*e[i]; e[i+1]=(r=pythag(f,g)); if (r == 0.0) { d[i+1] -= p; e[m]=0.0; break; } s=f/r; c=g/r; g=d[i+1]-p; r=(d[i]-g)*s+2.0*c*b; d[i+1]=g+(p=s*r); g=c*r-b; // Next loop can be omitted if eigenvectors not wanted for (k=0;k= l) continue; d[l] -= p; e[l]=g; e[m]=0.0; } } while (m != l); } }