1 #include <../../nrnconf.h> 35 static char rcsid[] =
"zhessen.c,v 1.1 1997/12/04 17:56:07 hines Exp";
55 if ( diag->
dim <
A->m - 1 )
64 for ( k = 0; k < limit; k++ )
67 zhhvec(tmp1,k+1,&beta,tmp1,&
A->me[k+1][k]);
68 diag->
ve[
k] = tmp1->
ve[k+1];
91 Real beta, r_ii, tmp_val;
96 if ( HQ == Q || H == Q )
99 if ( diag->
dim < limit )
101 if ( HQ->m != HQ->n )
113 for ( i = 0; i < H->m; i++ )
116 for ( j = 0; j < H->m; j++ )
117 tmp1->
ve[j].
re = tmp1->
ve[j].
im = 0.0;
118 tmp1->
ve[i].
re = 1.0;
121 for ( j = limit-1; j >= 0; j-- )
124 r_ii =
zabs(tmp2->ve[j+1]);
125 tmp2->ve[j+1] = diag->
ve[
j];
126 tmp_val = (r_ii*
zabs(diag->
ve[j]));
127 beta = ( tmp_val == 0.0 ) ? 0.0 : 1.0/tmp_val;
144 for ( i = 1; i < limit; i++ )
145 for ( j = 0; j < i-1; j++ )
146 H->me[i][j].re = H->me[i][j].im = 0.0;
ZMAT * zhhtrcols(ZMAT *M, int i0, int j0, ZVEC *hh, double beta)
static philox4x32_key_t k
ZMAT * zm_resize(ZMAT *A, int new_m, int new_n)
ZMAT * zHfactor(ZMAT *A, ZVEC *diag)
ZMAT * zhhtrrows(ZMAT *M, int i0, int j0, ZVEC *hh, double beta)
ZVEC * zget_col(ZMAT *mat, int col, ZVEC *vec)
ZVEC * zhhvec(ZVEC *vec, int i0, Real *beta, ZVEC *out, complex *newval)
ZMAT * zset_col(ZMAT *mat, int col, ZVEC *vec)
ZVEC * zv_resize(ZVEC *x, int new_dim)
ZVEC * zhhtrvec(ZVEC *hh, double beta, int i0, ZVEC *in, ZVEC *out)
#define MEM_STAT_REG(var, type)
#define error(err_num, fn_name)
ZMAT * zHQunpack(ZMAT *HQ, ZVEC *diag, ZMAT *Q, ZMAT *H)