29 double vnorm, alpha, beta, tau;
33 vnorm=0.0;
for(
int n=1; n<N; n++) vnorm+=v[n]*v[n];
34 vnorm=sqrt(vnorm);
if(isnan(vnorm) || vnorm==0.0)
return 0.0;
38 beta= - (alpha >= 0.0 ? +1.0 : -1.0) * hypot(alpha, vnorm);
39 tau=(beta-alpha)/beta ;
48 for(
int n=1; n<N; n++) v[n]*=(1.0/s);
83 if(tau==0.0)
return(0);
84 if(rowNr<1 || columnNr<1)
return(1);
85 for(j=0; j<columnNr; j++) {
88 for(i=1; i<rowNr; i++)
89 wj += vector[i]*matrix[i][j];
94 for(i=1; i<rowNr; i++) matrix[i][j]-=tau*vector[i]*wj;
120 if(tau==0)
return(0);
121 if(size<1)
return(1);
123 d=w[0];
for(i=1; i<size; i++) d+=v[i]*w[i];
126 for(i=1; i<size; i++) w[i]-=tau*v[i]*d;
145 for(i=0, help=0; i<size; i++) help+=v[i]*v[i];
double householder_norm(double *v, int size)
int householder_hv(double tau, int size, double *v, double *w)
int householder_hm(double tau, double *vector, double **matrix, int rowNr, int columnNr)
double householder_transform(double *v, int N)
Header file for libtpcmodel.