11#include "tpcclibConfig.h"
39 double vnorm, alpha, beta, tau;
44 vnorm=0.0;
for(n=1; n<N; n++) vnorm+=v[n]*v[n];
45 vnorm=sqrt(vnorm);
if(isnan(vnorm) || vnorm==0.0)
return 0.0;
49 beta= - (alpha >= 0.0 ? +1.0 : -1.0) * hypot(alpha, vnorm);
50 tau=(beta-alpha)/beta ;
57 double os=1.0/(alpha-beta);
58 for(n=1; n<N; n++) v[n]*=os;
66 for(n=1; n<N; n++) v[n]*=(1.0/s);
102 if(tau==0.0)
return(0);
103 if(rowNr<1 || columnNr<1)
return(1);
104 for(j=0; j<columnNr; j++) {
107 for(i=1; i<rowNr; i++)
108 wj += vector[i]*matrix[i][j];
111 matrix[0][j]-=tau*wj;
113 for(i=1; i<rowNr; i++) matrix[i][j]-=tau*vector[i]*wj;
139 if(tau==0)
return(0);
140 if(size<1)
return(1);
142 d=w[0];
for(i=1; i<size; i++) d+=v[i]*w[i];
145 for(i=1; i<size; i++) w[i]-=tau*v[i]*d;
164 for(i=0; i<size; i++) ss+=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 library libtpcextensions.
Header file for libtpclinopt.