@@ -13,14 +13,14 @@ List ADMMsggl(const arma::mat& S, const List& group_idx,
1313 double rho, const double tau_incr, const double tau_decr, const double nu,
1414 const double tol_abs, const double tol_rel, const int maxiter) {
1515
16- int p = S.n_cols ;
16+ int d = S.n_cols ;
1717 int iter = 0 ;
1818 arma::mat Omega = arma::diagmat (1 /arma::diagvec (S));
19- arma::mat Z = arma::zeros (p, p );
20- arma::mat U = arma::zeros (p, p );
19+ arma::mat Z = arma::zeros (d, d );
20+ arma::mat U = arma::zeros (d, d );
2121 arma::mat Z_old = Z;
2222
23- arma::mat I = arma::ones (p, p );
23+ arma::mat I = arma::ones (d, d );
2424 if (!diag_ind) {
2525 I -= arma::diagmat (I);
2626 }
@@ -65,13 +65,13 @@ List ADMMsggl(const arma::mat& S, const List& group_idx,
6565 Z_block *= scale_grp;
6666 } else {
6767 double sq_all = arma::accu (arma::square (Z_block));
68- arma::vec d = Z_diag.elem (row_idx);
69- double sq_diag = arma::dot (d, d );
68+ arma::vec de = Z_diag.elem (row_idx);
69+ double sq_diag = arma::dot (de, de );
7070 double offblock_norm = std::sqrt (std::max (sq_all-sq_diag, 0.0 ));
7171 double scale_grp = std::max (1.0 - lambda * (1 -alpha) / (rho * (offblock_norm + eps)), 0.0 );
7272 Z_block *= scale_grp;
7373 for (arma::uword k = 0 ; k < row_idx.n_elem ; ++k) {
74- Z (row_idx[k], row_idx[k]) = d [k];
74+ Z (row_idx[k], row_idx[k]) = de [k];
7575 }
7676 }
7777 }
@@ -85,8 +85,8 @@ List ADMMsggl(const arma::mat& S, const List& group_idx,
8585 double s = arma::norm (rho*(Z - Z_old), " fro" );
8686
8787 // tolerance
88- double tol_pri = p * tol_abs + tol_rel * std::max (arma::norm (Omega, " fro" ), arma::norm (Z, " fro" ));
89- double tol_dual = p * tol_abs + tol_rel * rho * arma::norm (U, " fro" );
88+ double tol_pri = d * tol_abs + tol_rel * std::max (arma::norm (Omega, " fro" ), arma::norm (Z, " fro" ));
89+ double tol_dual = d * tol_abs + tol_rel * rho * arma::norm (U, " fro" );
9090
9191 if (r <= tol_pri && s <= tol_dual) {
9292 break ;
@@ -124,18 +124,18 @@ List ADMMsggn(const arma::mat& S, const List& group_idx, std::string penalty,
124124 double rho, const double tau_incr, const double tau_decr, const double nu,
125125 const double tol_abs, const double tol_rel, const int maxiter) {
126126
127- int p = S.n_cols ;
127+ int d = S.n_cols ;
128128 int iter = 0 ;
129129 arma::mat Omega = arma::diagmat (1 /arma::diagvec (S));
130- arma::mat Z = arma::zeros (p, p );
131- arma::mat U = arma::zeros (p, p );
130+ arma::mat Z = arma::zeros (d, d );
131+ arma::mat U = arma::zeros (d, d );
132132 arma::mat Z_old = Z;
133133 List sgglres = ADMMsggl (S, group_idx, diag_ind, diag_grp, diag_include, lambda, alpha,
134134 rho, tau_incr, tau_decr, nu,
135135 tol_abs, tol_rel, maxiter);
136136 arma::mat initial = sgglres[" hatOmega" ];
137137
138- arma::mat I = arma::ones (p, p );
138+ arma::mat I = arma::ones (d, d );
139139 if (!diag_ind) {
140140 I -= arma::diagmat (I);
141141 }
@@ -164,8 +164,8 @@ List ADMMsggn(const arma::mat& S, const List& group_idx, std::string penalty,
164164 double s = arma::norm (rho*(Z - Z_old), " fro" );
165165
166166 // tolerance
167- double tol_pri = p * tol_abs + tol_rel * std::max (arma::norm (Omega, " fro" ), arma::norm (Z, " fro" ));
168- double tol_dual = p * tol_abs + tol_rel * rho * arma::norm (U, " fro" );
167+ double tol_pri = d * tol_abs + tol_rel * std::max (arma::norm (Omega, " fro" ), arma::norm (Z, " fro" ));
168+ double tol_dual = d * tol_abs + tol_rel * rho * arma::norm (U, " fro" );
169169
170170 if (r <= tol_pri && s <= tol_dual) {
171171 break ;
0 commit comments