17 #ifndef EPSGLASSO_SLEP
18 #define EPSGLASSO_SLEP
39 void epsgLasso(
double *X,
double * normx,
double * V,
int k,
int n,
double lambda1,
double lambda2,
int pflag){
40 int i, j, *iter_step, nn=n*k, m;
42 double normValue,c0=0, c;
44 v=(
double *)malloc(
sizeof(
double)*n);
45 x=(
double *)malloc(
sizeof(
double)*n);
46 iter_step=(
int *)malloc(
sizeof(
int)*2);
96 v[j+1]=X[i + (j+1)*k ];
97 v[j+2]=X[i + (j+2)*k];
98 v[j+3]=X[i + (j+3)*k];
99 v[j+4]=X[i + (j+4)*k];
104 normValue+=v[j]*v[j];
107 normValue+=v[j]*v[j]+
122 normValue=sqrt(normValue);
124 if (normValue<= lambda2){
132 normx[1]+=normValue-lambda2;
135 normValue=(normValue-lambda2)/normValue;
139 X[i + j*k]*=normValue;
140 normx[0]+=fabs(X[i + j*k]);
143 X[i + j*k]*=normValue;
144 X[i + (j+1)*k]*=normValue;
145 X[i + (j+2)*k]*=normValue;
146 X[i + (j+3)*k]*=normValue;
147 X[i + (j+4)*k]*=normValue;
149 normx[0]+=fabs(X[i + j*k])+
150 fabs(X[i + (j+1)*k])+
151 fabs(X[i + (j+2)*k])+
152 fabs(X[i + (j+3)*k])+
153 fabs(X[i + (j+4)*k]);
173 normValue+=fabs(v[j]);
176 if (normValue<= lambda2){
181 eplb(x, &c, iter_step, v, n, lambda2, c0);
void eplb(double *x, double *root, int *steps, double *v, int n, double z, double lambda0)
void epsgLasso(double *X, double *normx, double *V, int k, int n, double lambda1, double lambda2, int pflag)