From 62d9e1804358ac864d3ae46e5d064551012a9942 Mon Sep 17 00:00:00 2001 From: Jiri Pittner Date: Wed, 10 Dec 2025 17:11:26 +0100 Subject: [PATCH] diagonalize3 for n smaller than dimension --- nonclass.cc | 6 +++--- nonclass.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nonclass.cc b/nonclass.cc index 1869614..0981e94 100644 --- a/nonclass.cc +++ b/nonclass.cc @@ -947,10 +947,10 @@ extern "C" void FORNAME(zggev)(const char *JOBVL, const char *JOBVR, const FINT //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); -void diagonalize3(NRVec &d, NRVec &d1, NRMat *v, const bool corder) +void diagonalize3(NRVec &d, NRVec &d1, NRMat *v, const bool corder, int n0) { - FINT n = d.size(); - if(d1.size()!=n) laerror("inconsistent dimensions in diagonalize3"); + FINT n = n0? n0: d.size(); + if(d1.size()nrows()||n!=v->ncols()) laerror("inconsistent dimensions in diagonalize3");} d.copyonwrite(); d1.copyonwrite(); diff --git a/nonclass.h b/nonclass.h index 3a3da84..be198ac 100644 --- a/nonclass.h +++ b/nonclass.h @@ -184,7 +184,7 @@ extern void gdiagonalize(NRMat > &a, NRVec &wr, NRV NRMat > *b=NULL, NRVec > *beta=NULL); //diagonalization of symmetric real tridiagonal matrix -extern void diagonalize3(NRVec &d, NRVec &d1, NRMat *v, const bool corder=1); +extern void diagonalize3(NRVec &d, NRVec &d1, NRMat *v, const bool corder=1, int n0=0); //complex,real,imaginary parts of various entities template