From 07b923379dd1888244dc9600eda1bd6bed36f110 Mon Sep 17 00:00:00 2001 From: Jiri Pittner Date: Tue, 10 Feb 2026 14:58:42 +0100 Subject: [PATCH] improved lanczos --- lanczos.h | 14 +++++++++++--- t.cc | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/lanczos.h b/lanczos.h index c812352..d7ab205 100644 --- a/lanczos.h +++ b/lanczos.h @@ -50,7 +50,7 @@ if ( n!= (int)bigmat.ncols()) laerror("non-square matrix in lanczos"); if(eivals.size() vec1(n),vec2(n); -NRVec *v0,*v1; +NRVec *v0; AuxStorage *s0,*s1; if(incore) @@ -112,9 +112,17 @@ for(j=1; j vec3(n); + for(int k=0; kput(vec2,j); vec1 *= -beta[j-1]; bigmat.gemv(1,vec1,'n',1,vec2); diff --git a/t.cc b/t.cc index 5c17b48..d023ad5 100644 --- a/t.cc +++ b/t.cc @@ -4650,7 +4650,7 @@ if(n<=20) } } -if(1); +if(0) { int n,m; cin>> n>>m; @@ -4660,4 +4660,36 @@ NRMat b = explicit_matrix >(a); cout <<"Error = "<<(a-b).norm()<>m >>which; +cout <<"here\n"; +NRSMat a; +cin>>a; +int n=a.nrows(); +NRVec rr(n); + +NRSMat aa(a); +NRMat vv(n,n); +diagonalize(aa,rr,&vv); +NRVec r(m); +NRVec *eivecs = new NRVec[m]; +cout <<"Exact energies " <