diagonalize3 for n smaller than dimension
This commit is contained in:
@@ -947,10 +947,10 @@ extern "C" void FORNAME(zggev)(const char *JOBVL, const char *JOBVR, const FINT
|
|||||||
//tridiagonal
|
//tridiagonal
|
||||||
extern "C" void FORNAME(dsteqr)(const char *compz, const FINT *n, double *d, double *d1, double *z, const FINT *ldz, double *work, FINT *info);
|
extern "C" void FORNAME(dsteqr)(const char *compz, const FINT *n, double *d, double *d1, double *z, const FINT *ldz, double *work, FINT *info);
|
||||||
|
|
||||||
void diagonalize3(NRVec<double> &d, NRVec<double> &d1, NRMat<double> *v, const bool corder)
|
void diagonalize3(NRVec<double> &d, NRVec<double> &d1, NRMat<double> *v, const bool corder, int n0)
|
||||||
{
|
{
|
||||||
FINT n = d.size();
|
FINT n = n0? n0: d.size();
|
||||||
if(d1.size()!=n) laerror("inconsistent dimensions in diagonalize3");
|
if(d1.size()<n-1) laerror("inconsistent dimensions in diagonalize3");
|
||||||
if(v) {if(n!=v->nrows()||n!=v->ncols()) laerror("inconsistent dimensions in diagonalize3");}
|
if(v) {if(n!=v->nrows()||n!=v->ncols()) laerror("inconsistent dimensions in diagonalize3");}
|
||||||
d.copyonwrite();
|
d.copyonwrite();
|
||||||
d1.copyonwrite();
|
d1.copyonwrite();
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ extern void gdiagonalize(NRMat<std::complex<double> > &a, NRVec<double> &wr, NRV
|
|||||||
NRMat<std::complex<double> > *b=NULL, NRVec<std::complex<double> > *beta=NULL);
|
NRMat<std::complex<double> > *b=NULL, NRVec<std::complex<double> > *beta=NULL);
|
||||||
|
|
||||||
//diagonalization of symmetric real tridiagonal matrix
|
//diagonalization of symmetric real tridiagonal matrix
|
||||||
extern void diagonalize3(NRVec<double> &d, NRVec<double> &d1, NRMat<double> *v, const bool corder=1);
|
extern void diagonalize3(NRVec<double> &d, NRVec<double> &d1, NRMat<double> *v, const bool corder=1, int n0=0);
|
||||||
|
|
||||||
//complex,real,imaginary parts of various entities
|
//complex,real,imaginary parts of various entities
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|||||||
Reference in New Issue
Block a user