18 #ifndef EPSGLASSO_SLEP
19 #define EPSGLASSO_SLEP
41 void epsgLasso(
double *X,
double * normx,
double * V,
int k,
int n,
double lambda1,
double lambda2,
int pflag){
42 int i, j, *iter_step, nn=n*k, m;
44 double normValue,c0=0, c;
46 v=(
double *)malloc(
sizeof(
double)*n);
47 x=(
double *)malloc(
sizeof(
double)*n);
48 iter_step=(
int *)malloc(
sizeof(
int)*2);
98 v[j+1]=X[i + (j+1)*k ];
99 v[j+2]=X[i + (j+2)*k];
100 v[j+3]=X[i + (j+3)*k];
101 v[j+4]=X[i + (j+4)*k];
106 normValue+=v[j]*v[j];
109 normValue+=v[j]*v[j]+
124 normValue=sqrt(normValue);
126 if (normValue<= lambda2){
134 normx[1]+=normValue-lambda2;
137 normValue=(normValue-lambda2)/normValue;
141 X[i + j*k]*=normValue;
142 normx[0]+=fabs(X[i + j*k]);
145 X[i + j*k]*=normValue;
146 X[i + (j+1)*k]*=normValue;
147 X[i + (j+2)*k]*=normValue;
148 X[i + (j+3)*k]*=normValue;
149 X[i + (j+4)*k]*=normValue;
151 normx[0]+=fabs(X[i + j*k])+
152 fabs(X[i + (j+1)*k])+
153 fabs(X[i + (j+2)*k])+
154 fabs(X[i + (j+3)*k])+
155 fabs(X[i + (j+4)*k]);
175 normValue+=fabs(v[j]);
178 if (normValue<= lambda2){
183 eplb(x, &c, iter_step, v, n, lambda2, c0);
201 #endif //USE_GPL_SHOGUN