1 #include <../../nrnconf.h>
38 static char rcsid[] =
"zhsehldr.c,v 1.1 1997/12/04 17:56:08 hines Exp";
45 #define is_zero(z) ((z).re == 0.0 && (z).im == 0.0)
58 if ( i0 < 0 || i0 >= vec->dim )
65 *newval = out->ve[i0];
69 abs_val =
zabs(out->ve[i0]);
70 *beta = 1.0/(norm * (norm+abs_val));
78 abs_val = -norm / abs_val;
79 newval->
re = abs_val*out->ve[i0].re;
80 newval->
im = abs_val*out->ve[i0].im;
81 } abs_val = -norm / abs_val;
82 out->ve[i0].re -= newval->
re;
83 out->ve[i0].im -= newval->
im;
99 if ( in->dim != hh->dim )
101 if ( i0 < 0 || i0 > in->dim )
105 scale.
re = -beta*tmp.
re;
106 scale.
im = -beta*tmp.
im;
131 if ( M->n != hh->
dim )
133 if ( i0 < 0 || i0 > M->m || j0 < 0 || j0 > M->n )
136 if ( beta == 0.0 )
return (M);
139 for (
i = i0;
i < M->m;
i++ )
148 scale.
re = -beta*ip.
re;
149 scale.
im = -beta*ip.
im;
182 if ( M->m != hh->
dim )
184 if ( i0 < 0 || i0 > M->m || j0 < 0 || j0 > M->n )
187 if ( beta == 0.0 )
return (M);
193 for (
i = i0;
i < M->m;
i++ )
198 for (
i = i0;
i < M->m;
i++ )
#define error(err_num, fn_name)
#define MEM_STAT_REG(var, type)
ZVEC * _zv_copy(ZVEC *in, ZVEC *out, u_int i0)
ZVEC * zhhvec(ZVEC *vec, int i0, Real *beta, ZVEC *out, complex *newval)
ZMAT * zhhtrrows(ZMAT *M, int i0, int j0, ZVEC *hh, double beta)
ZMAT * zhhtrcols(ZMAT *M, int i0, int j0, ZVEC *hh, double beta)
ZVEC * zhhtrvec(ZVEC *hh, double beta, int i0, ZVEC *in, ZVEC *out)
complex __zip__(complex *zp1, complex *zp2, int len, int flag)
void __zmltadd__(complex *zp1, complex *zp2, complex s, int len, int flag)
ZVEC * zv_resize(ZVEC *x, int new_dim)
complex _zin_prod(ZVEC *x, ZVEC *y, u_int i0, u_int flag)