17 #ifndef EPSGLASSO_SLEP
18 #define EPSGLASSO_SLEP
37 void epsgLasso(
double *X,
double * normx,
double * V,
int k,
int n,
double lambda1,
double lambda2,
int pflag){
38 int i, j, *iter_step, nn=n*k, m;
40 double normValue,c0=0, c;
42 v=(
double *)malloc(
sizeof(
double)*n);
43 x=(
double *)malloc(
sizeof(
double)*n);
44 iter_step=(
int *)malloc(
sizeof(
int)*2);
94 v[j+1]=X[i + (j+1)*k ];
95 v[j+2]=X[i + (j+2)*k];
96 v[j+3]=X[i + (j+3)*k];
97 v[j+4]=X[i + (j+4)*k];
102 normValue+=v[j]*v[j];
105 normValue+=v[j]*v[j]+
120 normValue=sqrt(normValue);
122 if (normValue<= lambda2){
130 normx[1]+=normValue-lambda2;
133 normValue=(normValue-lambda2)/normValue;
137 X[i + j*k]*=normValue;
138 normx[0]+=fabs(X[i + j*k]);
141 X[i + j*k]*=normValue;
142 X[i + (j+1)*k]*=normValue;
143 X[i + (j+2)*k]*=normValue;
144 X[i + (j+3)*k]*=normValue;
145 X[i + (j+4)*k]*=normValue;
147 normx[0]+=fabs(X[i + j*k])+
148 fabs(X[i + (j+1)*k])+
149 fabs(X[i + (j+2)*k])+
150 fabs(X[i + (j+3)*k])+
151 fabs(X[i + (j+4)*k]);
171 normValue+=fabs(v[j]);
174 if (normValue<= lambda2){
179 eplb(x, &c, iter_step, v, n, lambda2, c0);